PUN更改仅影响本地玩家,不影响其他客户端

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

我在其他客户在玩家游戏中的行为方面遇到了一些问题。基本上,如果有影响到每个客户的变更,它将起作用。但是,它将仅正确显示在本地播放器的屏幕上。其他播放器(显示在客户的屏幕上)保持不变。

例如,假设我有一个布尔值“ test”设置为false。房间中的每个玩家都必须同时将此布尔值设为true。每个玩家自己的角色的“测试”设置为true,但是本地玩家屏幕上的其他客户端将其布尔值显示为false

我如何经历以下每个玩家的示例:

foreach (var item in PhotonNetwork.PlayerList)
            {
                var itemPhotonView = (PhotonView)item.TagObject;

                itemPhotonView.RPC("SetPlayerTeam", item, citiString);
            }

我希望上面的代码能够遍历每个字符,即使不是本地玩家也是如此。我相信它可以实现,但我不确定100%。

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);
            }

        }

我确定上面的代码不会更改非本地客户端。我不确定是否应该像第一个示例那样使用“ foreach”方法,因为我什至不确定这样做是否可以实现。有什么想法吗?

我在其他客户在玩家游戏中的行为方面遇到了一些问题。基本上,如果有影响到每个客户的变更,它将起作用。但是,它只会正确显示在...

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

通过将rpc的目标定义为所有人,可以以更有效的方式向所有人发送rpc,这将防止网络流量过载,并且仅发送一个rpc。

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