PUN OnPlayerPropertiesChanged и включение объектов - PullRequest
1 голос
/ 06 января 2020

Редактирование: измененные массивы для включения просто объектов для лучшей читаемости.

В настоящее время я использую Photon и у меня есть функция OnPlayerPropertiesChanged, вызывающая RP C в сценарии проигрывателя для изменения модели игрока. Какая у них модель, зависит от команды, которая указана в их пользовательских свойствах. Эти две команды - "граждане" и "ангелы". Я хочу, чтобы модель Citizen Model обнаруживалась, когда свойство команды человека "гражданин", и то же самое для свойства "ангел". Ниже приведены фрагменты кода:

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 ()?

1 Ответ

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

Я ответил на другие ваши вопросы ( Изменения PUN касаются только локальных игроков, но не других клиентов ) с аналогичной проблемой, вместо этого не вызывайте rp c для указанной цели c, установите для цели rp c ВСЕ:

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

Пока,

Жан

...