Я пытаюсь создать совместную многопользовательскую игру от первого лица и думаю, что неправильно понял, как должны работать Photon и RPC.
У меня есть работающий многопользовательский проект от первого лица, в котором аватары игроков могут видеть друг друга и перемещаться, поскольку аватары игроков имеют вид фотонного преобразования.
В рамках скрипта контроллера игрока (обрабатывает движение игрока только для локального игрока), который прикреплен к префабу аватара игрока, у меня есть атрибут:
public PlayerCharacterInfo myCharacter;
, который содержит всю информацию и статистику игрока, включая имя, уровень, currentHP, maxHP и т. Д., Которые добавляются в PlayerController аватара игрока, когда игрок входит в комнату и создается его аватар.
Когда я присоединяюсь к многопользовательской комнате, каждый игрок может видеть только свою собственную статистику. Например, в редакторе при запуске игры на контроллере игрока myCharacter отображаются только значения локального редактора аватара игрока.
Я вижу, что на других аватарах игроков есть экземпляр myCharacter, но значения не отображаются.
На данный момент, я полагаю, мне просто нужно иметь функцию RPC, подобную этой, в моем контроллере плеера, которая просто переназначает myCharacter себе, чтобы он мог быть передан всем:
[PunRPC]
void RPC_AddCharacter(PlayerCharacterInfo paramCharacter)
{
myCharacter = paramCharacter;
}
в пустом начале ():
if(PV.IsMine)
{
PV.RPC("RPC_AddCharacter", RpcTarget.All, myCharacter);
}
Но это не позволяет мне видеть значения myCharacter для аватаров нелокальных игроков.
Моя цель - сначала показать имя аватара игрока, на которого вы смотрите, с помощью raycast, но я даже не могу синхронизировать эти данные.
Правильно ли я понял здесь, но я ошибаюсь?
Или это просто не так, как работает Фотон?
Нужно ли вместо этого хранить PlayerCharacterInfo каждого игрока в контроллере комнаты для каждого игрока или что-то в этом роде?