> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# PartyManager::CreateLocalUser

> 创建本地用户对象，用于在执行网络和聊天操作时表示本地玩家。

创建本地用户对象，用于在执行网络和聊天操作时表示本地玩家。

## Syntax

```cpp theme={null}
PartyError CreateLocalUser(  
    PartyString entityId,  
    PartyString titlePlayerEntityToken,  
    PartyLocalUser** localUser  
)  
```

### Parameters

**`entityId`**   [PartyString](/services/playfab/multiplayer/networking/reference/typedefs)

要与本地用户关联的 PlayFab 实体 ID。

**`titlePlayerEntityToken`**   [PartyString](/services/playfab/multiplayer/networking/reference/typedefs)

要与本地用户关联的 PlayFab 实体令牌。

**`localUser`**   [PartyLocalUser\*\*](/services/playfab/multiplayer/networking/reference/classes/PartyLocalUser/partylocaluser)\
*library-allocated output*

输出的本地用户对象。

### Return value

PartyError

如果创建本地用户成功，则返回 `c_partyErrorSuccess`；否则返回错误代码。可通过 [GetErrorMessage()](/services/playfab/multiplayer/networking/reference/classes/PartyManager/methods/partymanager_geterrormessage) 检索错误代码的可读形式。

## Remarks

此方法采用 PlayFab 实体 ID 作为 `entityId`，采用 PlayFab 实体令牌作为 `titlePlayerEntityToken`。除了 `entityId` 的长度小于或等于 `c_maxEntityIdStringLength` 之外，不会对这些值执行同步验证。当库执行需要用户身份验证或授权的操作（例如创建网络、身份验证到网络或执行语音转文本转录）时，Party 服务将验证令牌是否有效、是否未过期、是否与提供的实体 ID 关联，以及是否被授权执行操作。如果不满足这些条件，操作将失败。<br /><br /> 可以从 PlayFab 登录操作的输出中获取 PlayFab 实体 ID 和实体令牌，然后作为此方法的输入提供。PlayFab 实体 ID 必须为 `title_player_account` 类型，对于大多数开发人员而言，此类型以最传统的方式表示"玩家"。若要创建表示其他受支持实体类型的用户，请改用 [CreateLocalUserWithEntityType()](/services/playfab/multiplayer/networking/reference/classes/PartyManager/methods/partymanager_createlocaluserwithentitytype)。   <br /><br /> 提供的 `entityId` 和 `titlePlayerEntityToken` 必须使用与传递给 [Initialize()](/services/playfab/multiplayer/networking/reference/classes/PartyManager/methods/partymanager_initialize) 的相同标题 ID 获取。   <br /><br /> Party 库复制所提供的 PlayFab 实体令牌以用于需要本地用户身份验证或授权的后续操作，例如 [CreateNewNetwork()](/services/playfab/multiplayer/networking/reference/classes/PartyManager/methods/partymanager_createnewnetwork) 或 [PartyNetwork::AuthenticateLocalUser()](/services/playfab/multiplayer/networking/reference/classes/PartyNetwork/methods/partynetwork_authenticatelocaluser)。如果提供给此调用的令牌已过期或以其他方式无效，则需要有效令牌的操作将失败。可通过调用 [PartyLocalUser::UpdateEntityToken()](/services/playfab/multiplayer/networking/reference/classes/PartyLocalUser/methods/partylocaluser_updateentitytoken) 向 Party 库提供新的有效令牌。   <br /><br /> 调用方负责监视提供给此方法以及 PartyLocalUser::UpdateEntityToken() 的实体令牌的过期时间。当令牌接近或超过过期时间时，应通过执行 PlayFab 登录操作获取新令牌，并通过调用 PartyLocalUser::UpdateEntityToken() 将其提供给 Party 库。我们建议在先前提供的令牌的有效期过半时获取新令牌。在可能进入低功耗状态或以其他方式导致应用程序长时间暂停执行的平台上，令牌可能在过期之前无法刷新，此时应在执行恢复后立即检查令牌是否过期。   <br /><br /> 在任何给定时间只能同时存在 `c_maxLocalUsersPerDeviceCount` 个 PartyLocalUser 对象。如果创建另一个本地用户会超过该限制，此方法将同步失败。   <br /><br /> 成功返回时，此方法会使先前由 [GetLocalUsers()](/services/playfab/multiplayer/networking/reference/classes/PartyManager/methods/partymanager_getlocalusers) 返回的任何数组的内存无效，因为它同步将新用户添加到数组中。[StartProcessingStateChanges()](/services/playfab/multiplayer/networking/reference/classes/PartyManager/methods/partymanager_startprocessingstatechanges) 也会使该数组的内存无效。返回的 `localUser` 对象将保持有效，直到生成 [PartyDestroyLocalUserCompletedStateChange](/services/playfab/multiplayer/networking/reference/structs/partydestroylocalusercompletedstatechange) 并且所有引用该对象的状态更改都已返回到 [FinishProcessingStateChanges()](/services/playfab/multiplayer/networking/reference/classes/PartyManager/methods/partymanager_finishprocessingstatechanges)。

## Requirements

**Header:** Party.h

## See also

[PartyManager](/services/playfab/multiplayer/networking/reference/classes/PartyManager/partymanager)\
[PartyDestroyLocalUserCompletedStateChange](/services/playfab/multiplayer/networking/reference/structs/partydestroylocalusercompletedstatechange)\
[PartyManager::Initialize](/services/playfab/multiplayer/networking/reference/classes/PartyManager/methods/partymanager_initialize)\
[PartyManager::GetLocalUsers](/services/playfab/multiplayer/networking/reference/classes/PartyManager/methods/partymanager_getlocalusers)\
[PartyManager::CreateLocalUserWithEntityType](/services/playfab/multiplayer/networking/reference/classes/PartyManager/methods/partymanager_createlocaluserwithentitytype)\
[PartyManager::DestroyLocalUser](/services/playfab/multiplayer/networking/reference/classes/PartyManager/methods/partymanager_destroylocaluser)\
[PartyManager::CreateNewNetwork](/services/playfab/multiplayer/networking/reference/classes/PartyManager/methods/partymanager_createnewnetwork)\
[PartyNetwork::AuthenticateLocalUser](/services/playfab/multiplayer/networking/reference/classes/PartyNetwork/methods/partynetwork_authenticatelocaluser)\
[PartyNetwork::RemoveLocalUser](/services/playfab/multiplayer/networking/reference/classes/PartyNetwork/methods/partynetwork_removelocaluser)\
[PartyNetwork::CreateInvitation](/services/playfab/multiplayer/networking/reference/classes/PartyNetwork/methods/partynetwork_createinvitation)\
[PartyNetwork::RevokeInvitation](/services/playfab/multiplayer/networking/reference/classes/PartyNetwork/methods/partynetwork_revokeinvitation)\
[PartyNetwork::CreateEndpoint](/services/playfab/multiplayer/networking/reference/classes/PartyNetwork/methods/partynetwork_createendpoint)\
[PartyLocalUser::UpdateEntityToken](/services/playfab/multiplayer/networking/reference/classes/PartyLocalUser/methods/partylocaluser_updateentitytoken)\
[PartyLocalDevice::CreateChatControl](/services/playfab/multiplayer/networking/reference/classes/PartyLocalDevice/methods/partylocaldevice_createchatcontrol)
