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



我在 FPS 多人游戏中有 3 个枪支预制件。 当我生成不同的预制件时,我只在本地客户端上看到它。 其他客户端仍然只能看到基础武器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>();
}

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

您需要添加:

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

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

最新更新