Unity OnObjSpawn netId:1具有无效资产ID UnityEngine.Networking.NetworkIdentity:UNetStaticUpdate()

时间:2019-01-26 14:41:01

标签: unity3d networking multiplayer unity3d-unet

我正在尝试使用以下脚本生成两个不同的玩家预制组件,以覆盖unity的大厅经理。在主机方面,一切工作正常,生成了两个播放器,但在客户端方面,我收到此错误消息:

  

OnObjSpawn netId:1具有无效的资产ID,UnityEngine.Networking.NetworkIdentity:UNetStaticUpdate()。

并且没有播放器预制件出现在屏幕上。

有人可以告诉我如何正确在客户方正确注册播放器的预制件吗?

public class NetworkCustom : NetworkManager
{

    public int chosenCharacter = 0;

    //subclass for sending network messages
    public class NetworkMessage : MessageBase
    {
        public int chosenClass;
    }



    public override void OnServerAddPlayer(NetworkConnection conn, short playerControllerId, NetworkReader extraMessageReader)
    {
        NetworkMessage message = extraMessageReader.ReadMessage<NetworkMessage>();
        int selectedClass = message.chosenClass;
        Debug.Log("server add with message " + selectedClass);

        if (selectedClass == 0)
        {
            GameObject player = Instantiate(Resources.Load("Player1", typeof(GameObject))) as GameObject;
            NetworkServer.AddPlayerForConnection(conn, player, playerControllerId);
        }

        if (selectedClass == 1)
        {
            GameObject player = Instantiate(Resources.Load("Player2", typeof(GameObject))) as GameObject;
            NetworkServer.AddPlayerForConnection(conn, player, playerControllerId);
        }
    }

    public override void OnClientConnect(NetworkConnection conn)
    {
        NetworkMessage test = new NetworkMessage();
        test.chosenClass = chosenCharacter;

        ClientScene.AddPlayer(conn,0 , test);
    }


    public override void OnClientSceneChanged(NetworkConnection conn)
    {
        //base.OnClientSceneChanged(conn);
    }

    public void btn1()
    {
        chosenCharacter = 0;
    }

    public void btn2()
    {
        chosenCharacter = 1;
    }
}

0 个答案:

没有答案