如图所示[Image Removed]
1. 这些ID什么区别,尤其是PlayerId与ControllerId还有UserId?
2. 他们在Server端也存在可以获取么?是否与Client端的值一致?
3. 为什么要分PlayerId还有ControllerId?(这个其实有点和第一条想问的类似,但是总感觉这个功能是不是重复了?玩家需要那么多种ID?)
如图所示[Image Removed]
1. 这些ID什么区别,尤其是PlayerId与ControllerId还有UserId?
2. 他们在Server端也存在可以获取么?是否与Client端的值一致?
3. 为什么要分PlayerId还有ControllerId?(这个其实有点和第一条想问的类似,但是总感觉这个功能是不是重复了?玩家需要那么多种ID?)
你好,这里面包含了几个不同的ID
UGameplayStatics::GetPlayerState:返回GameState的玩家数组PlayerArray中指定索引的玩家状态PlayerState对象,索引在客户端和服务端一致,用于客户端或服务器访问所有玩家信息通过GameState->PlayerArray直接遍历
APlayerState::PlayerId:唯一标识玩家的数字,但仅保证在当前游戏中唯一**,**如果需要持久辨识玩家身份比如断线重连也要识别之前的身份,用UniqueId;若只需区分当前局内玩家,也可用PlayerId
UGameplayStatics::GetPlayerControllerID:用于本地场景,通过ControllerId来区分本地的多个playercontroller使用不同的输入,比如单机或者分屏时来判断主玩家和第二本地玩家
APlayerState::BP_GetUniqueId: 获取该PlayerState所持有的唯一网络ID并且这个属性会被复制,可以用于网络游戏中保存进度,断线重连识别旧玩家等场景
APlayerController::GetPlatformUserId:用于本地场景,返回与此PlayerController所属本地玩家相关联的平台用户ID,这一ID用于标识本地设备或平台上的用户账号
感谢您的回答明白了
别客气,有问题再交流~