PUN OnPlayerPropertiesChanged and Object Enabling

问题描述 投票:1回答:1

编辑:将更改后的数组仅启用为对象以提高可读性。

目前,我正在使用Photon,并具有一个OnPlayerPropertiesChanged函数,该函数在播放器脚本中调用RPC来更改播放器的模型。他们拥有哪种模型取决于其自定义属性中说明的团队。这两个团队是“公民”和“天使”。我希望在一个人的团队财产为“公民”时显示公民模型,而对于“天使”财产为同样的模型。下面的代码段:

GameManager:

public override void OnPlayerPropertiesUpdate(Player target, ExitGames.Client.Photon.Hashtable changedProps)
        {
            if (changedProps.ContainsKey("team"))
            {
                var targetPhotonView = (PhotonView)target.TagObject;
                targetPhotonView.RPC("ChangeTeamObjs", target, changedProps);
            }
        }

PlayerController:

[PunRPC]
        public void ChangeTeamObjs(PhotonHash changedProps)
        {
            switch (changedProps["team"].ToString())
            {
                    case specString:
                        citizenModel.SetActive(true);
                        angelModel.SetActive(false);
                        break;
                    case citiString:
                        citizenModel.SetActive(true);
                        angelModel.SetActive(false);
                        break;
                    case angelString:
                        citizenModel.SetActive(false);
                        angelModel.SetActive(true);
                        break;
                    default:
                        Debug.Log("ChangeTeamObjs() | Unknown team! | " + PhotonNetwork.LocalPlayer.NickName);
                        break;
            }
            ClientServerEnabling();
        }

[当前,每个人的模型在他们自己的屏幕上正确更改,但是其他播放器上的两个模型都在本地播放器的屏幕上启用。当调用OnPlayerPropertiesUpdate()时,如何设置代码以使其他客户端的模型在人的屏幕上显示/消失?

c# unity3d multiplayer photon
1个回答
0
投票

我回答了类似问题的其他问题(PUN Changes affect local players only, not other clients),不要将rpc调用到特定目标,而是将rpc目标设置为ALL:

https://doc.photonengine.com/en-us/pun/v2/gameplay/rpcsandraiseevent#targets__buffering_and_order

再见,

吉恩

© www.soinside.com 2019 - 2024. All rights reserved.