Создание экземпляра Unity Photon Player

#unity3d #networking #multiplayer #virtual-reality #photon

#unity-игровой движок #создание сети #Многопользовательский режим #виртуальная реальность #photon

Вопрос:

У меня есть проект SteamVR Unity, который я конвертирую в многопользовательский режим. Когда к игре присоединяется другой клиент, вместо того, чтобы два разных игрока видели друг друга, у каждого игрока есть своя версия игры, где он контролирует все экземпляры игрока. Например, пока подключен один игрок, все в порядке, но когда присоединяется второй игрок, игра просто добавляет сборку другого игрока, которой также управляет первый игрок. Я попытался заменить проигрыватель простым кубом, и все кажется прекрасным. и у проигрывателя, и у куба есть Photon Transform View и Photon View скрипты. Я был бы признателен за любую помощь, которую я могу получить.

Ответ №1:

Это распространенная проблема, когда вы начинаете с PUN. Вероятно, вы настраиваете сборный проигрыватель с сетевой синхронизацией и создаете его экземпляр для каждого проигрывателя. Все скрипты в экземплярах будут работать с локальными входными данными, что вы и видите сейчас. Требуется два варианта сборного файла для локального и удаленного представления. Поскольку непрактично всегда настраивать два префаба, вместо этого вы создаете один, который инициализируется (в режиме пробуждения или запуска) как локальный или удаленный. Ваши скрипты должны проверять PhotonView объекта, является ли он .isMine или нет. Это может быть сделано для каждого компонента (в каждом отдельном скрипте) или вы могли бы добавить компонент, который включает / отключает скрипты в GameObject, в зависимости от isMine.

Это делается, например, в руководстве по основам.

Ответ №2:

Unity не знает, мультиплеер это или нет. Когда вы вводите входные данные, все скрипты, ожидающие ввода, принимают их и ведут себя соответствующим образом. Чтобы решить эту проблему, в основном создайте другой проигрыватель, который не принимает никаких входных данных, и создайте его для других игроков.