Unity v2018.2.8f1, C #, оружие Переключение с помощью их создания в качестве игрыОбъект не синхронизируется, uNet - PullRequest
0 голосов
/ 21 сентября 2018

Я делаю многопользовательский FPS и в настоящее время пытаюсь синхронизировать переключение оружия.Моя проблема: если я создаю новое оружие, оно отображается только на локальном клиенте.У меня есть анимация equip и deEqip, которая, кажется, идеально синхронизируется.Единственная проблема заключается в том, что оружие не изменится, поэтому анимация будет работать и вызываться, но только для основного оружия, которое не изменится для NonLocalClients.

Я не хотел спамить свой код здесь, поэтому я вставилэто на hastebin: https://hastebin.com/suhogoyoya.cs

Этот скрипт не отключается на других клиентах, но, похоже, отлично работает на локальных клиентах, без каких-либо ошибок и помех.

Компоненты, которые я добавил вmy WeaponPrefabs: NetworkAnimator, NetworkIdentity (localPlayerAuthority), NetworkTransform

Резюме: 1) Анимации, базовое оружие, движение, стрельба, выстрелы из дульного среза все синхронизированы идеально 2) Instantiated оружие onLocalClient не будет отображаться на других подключенных клиентах, которыеозначает, что когда один игрок в игре меняет оружие, он может видеть только что экипированное оружие.Другие игроки видят только анимацию переключения и анимацию экипировки для того же оружия, которое было экипировано с самого начала.3) Я хочу создать экземпляр оружия, так как я хочу реализовать пикапы для оружия и т. Д. 4) Я перепробовал все возможные комбинации NetworkServer.Spawn (), [Command] и т. Д., И искал в течение 3 дней и не могу найтирешение, так что любая помощь будет хорошей

1 Ответ

0 голосов
/ 21 сентября 2018

пожалуйста, попробуйте:

Network.Instantiate(playerPrefab, transform.position, transform.rotation, 0);

больше информации о сетевых префабах здесь ...
ссылка на Unid Doc - создание экземпляра сети

...