我正在尝试使用以下脚本生成两个不同的玩家预制组件,以覆盖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;
}
}