Unity,C#,网络,3D。实例化预制件(武器)不会在所有客户端上显示

时间:2018-09-19 08:15:44

标签: c# unity3d networking

我在FPS多人游戏中有3个Gun预制件。 当我生成不同的预制件时,我只能在本地客户端上看到它。 其他客户仍然只能看到基本武器GFX。 是否有一种简单的方法可以让所有玩家看到我在本地客户端上实例化的武器图形?

动画,运动,旋转似乎效果很好。 只有本地武器的当前GFX不会在其他客户端上更改

这是我的“实例化”武器部分的代码:

        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 :(得分:0)

您需要在服务器上生成武器。

您需要添加:

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);
}

这将导致服务器更新其数据,然后其他客户端将被更新。