Изменения в PUN влияют только на местных игроков, но не на других клиентов - PullRequest
0 голосов
/ 07 января 2020

У меня были некоторые проблемы с поведением других клиентов в игре игрока. По сути, если есть изменения, которые влияют на каждого клиента, это будет работать. Тем не менее, он будет правильно отображаться только на экране локального игрока. Другие игроки (как они появляются на экране клиента) остаются без изменений.

Например, допустим, у меня логическое значение «test» установлено в false. Каждый игрок в комнате в одно и то же время должен превратить это логическое значение в истинное. Собственный персонаж каждого игрока получает значение «test», установленное в true, но другие клиенты на экране локального игрока отображают свои логические значения как false .

Пример того, как я go проходит через каждого игрока ниже:

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

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

Я хочу, чтобы приведенный выше код go проходил через каждого персонажа, даже если это не местный игрок. Я верю, что это достигается, но я не уверен на 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', как в первом примере, потому что я даже не уверен, достигнет ли это sh этого. Есть идеи?

1 Ответ

1 голос
/ 08 января 2020

Отправка rp c всем может быть осуществлена ​​более эффективным способом, определив цель rp c для всех, это предотвратит перегрузку сетевого трафика c и только одного rp c отправлено.

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

PhotonView photonView = PhotonView.Get(this);
photonView.RPC("ChangeTeamObjs", RpcTarget.All, , item, citiString);

Пока,

Жан

...