Unity OnObjSpawn netId: 1 имеет недопустимый идентификатор ресурса UnityEngine.Networking.NetworkIdentity: UNetStaticUpdate () - PullRequest
0 голосов
/ 26 января 2019

Я пытаюсь породить двух разных игроков, готовых переопределить менеджер лобби Юниона, используя скрипт ниже.На стороне хоста все работает отлично, два моих игрока появляются, но на стороне клиента я получаю следующее сообщение об ошибке:

OnObjSpawn netId: 1 имеет недопустимый идентификатор ресурса 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;
    }
}
...