Единство, C #, Сеть, 3D.Instantiating Prefab (Оружие) не будет отображаться на всех клиентах - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть 3 Gun Prefabs в многопользовательском FPS.Когда я создаю разные префабы, я вижу это только на локальном клиенте.Другие клиенты все еще видят только базовое оружие GFX.Есть ли у всех игроков простой способ увидеть графику оружия, которую я создаю на локальном клиенте?

Анимации, движения, повороты, кажется, работают отлично.Только текущий GFX локального оружия не изменится на других клиентах

Вот мой код для части оружия Instantiate:

        public void SpawnWeapon(PlayerWeapon _weapon)
{
    currentWeapon = _weapon;

    //Instantiate the prefab
    GameObject _weaponIns = (GameObject)Instantiate(_weapon.graphics, weaponHolder, false);
//Assign  the weaponGFX BUT works only on the local client
    currentGraphics = _weaponIns.GetComponent<WeaponGraphics>();
}

1 Ответ

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

Вам нужно вызвать оружие на сервере.

вам нужно добавить:

using UnityEngine.Networking;

в вашем скрипте, затем набрать

[Command] над вашим методом и порождает объект на сервере, например:

[Command] 
public void SpawnWeapon(PlayerWeapon _weapon)
{

currentWeapon = _weapon;
GameObject _weaponIns = (GameObject)Instantiate(_weapon.graphics, weaponHolder, 
false);
currentGraphics = _weaponIns.GetComponent<WeaponGraphics>();

NetworkServer.SpawnWithClientAuthority(_weaponIns, 
PLAYERS_NETWORK_IDENTITY.connectionToClient);
}

Это приведет к тому, что сервер обновит свои данные, а затем обновятся другие клиенты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...