Как узнать какой игрок покинул комнату в OnPlayerLeftRoom, Photon?

Изучаю Photon. Хочу, чтобы при выходе игрока из комнаты, его спрайт для оставшихся игроков заменялся. Замену спрайта реализовал в функции Kill(). В функции OnPlayerLeftRoom написал такой код:

public override void OnPlayerLeftRoom(Player otherPlayer)
{
    // Когда другой игрок покинул комнату
    PlayerController player = Map.Players.First(p => p.photonView.Owner == null);
    player.Kill();
}

Узнал из видео, что когда игрок выходит из комнаты, его Owner устанавливается на null. Однако этот код не работает: выдается ошибка о том, что подобного элемента в массиве не найдено. И правда, я смотрю в инспекторе, а объект игрока, вышедшего из комнаты, теперь принадлежит мастер-клиенту!

Вопрос: как найти в массиве компонентов PlayerController того игрока, который вышел из комнаты? Почему при выходе игрока из комнаты (функцией PhotonNetwork.LeaveRoom()) его Owner - это не сцена, не null, а мастер-клиент? В итоге у меня объект вышедшего игрока начинает повторять движения игрока мастер-клиента.

P.S. Свойство photonView в скрипте игрока — это ссылка на компонент PhotonView, висящий на игроке.


Ответы (1 шт):

Автор решения: Skuli Dropek

Можешь создать в классе PlayerController поле c называнием NickName или что-то другое и потом проверить по нему. К примеру: PlayerController player = Map.Players.First(p => p.NickName.Contains(otherPlayer.NickName));

→ Ссылка