天天看點

unet作為伺服器不顯示畫面,UNet:無法生成伺服器對象(不使用NetworkManager)

我'm playing around with Unity 5'的網絡HLAPI . I don't want to use the NetworkManager ,因為我沒有't want to pay for Unity'的多人遊戲服務(Matchmaker和Relay伺服器) .

當用戶端連接配接到伺服器時,我正在嘗試在用戶端上生成播放器 . 我可以讓用戶端正确連接配接到伺服器,但是用戶端上的産生失敗,并出現以下錯誤:

Failed to spawn server object, assetId=b861a662c70615a40971e7bab10e4e14 netId=1

UnityEngine.Networking.NetworkIdentity:UNetStaticUpdate()

請注意,在伺服器上,播放器對象正确生成 .

Minimal repro:

我在Unity 2D項目中,并将以下腳本附加到我的主攝像頭:

using UnityEngine;

using UnityEngine.Networking;

using UnityEngine.Networking.NetworkSystem;

public class MenuMinimalRepro : MonoBehaviour

{

private NetworkClient networkClient;

void OnGUI()

{

if (this.networkClient != null && this.networkClient.isConnected)

{

GUI.Label(new Rect(100, 25, 150, 25), "Running as Client");

}

else if (NetworkServer.active)

{

GUI.Label(new Rect(100, 25, 150, 25), "Running as Server");

}

else

{

if (GUI.Button(new Rect(100, 25, 150, 25), "Start as Client"))

{

this.StartClient();

}

if (GUI.Button(new Rect(100, 50, 150, 25), "Start as Server"))

{

this.StartServer();

}

}

}

public void StartServer()

{

NetworkServer.Listen(54321);

NetworkServer.RegisterHandler(MsgType.AddPlayer, OnAddPlayerServer);

}

public void StartClient()

{

this.networkClient = new NetworkClient();

this.networkClient.RegisterHandler(MsgType.Connect, OnConnectedClient);

this.networkClient.Connect("localhost", 54321);

}

// Connected handler for the client side

public void OnConnectedClient(NetworkMessage netMsg)

{

ClientScene.AddPlayer(this.networkClient.connection, 0);

}

// AddPlayer handler for the server side

public void OnAddPlayerServer(NetworkMessage netMsg)

{

AddPlayerMessage msg = netMsg.ReadMessage();

GameObject newPlayer = (GameObject)Instantiate(Resources.Load("Prefabs/Player"));

NetworkServer.AddPlayerForConnection(netMsg.conn, newPlayer, msg.playerControllerId);

}

}

我的Player對象是一個簡單的精靈,我已經使用NetworkIdentity元件(see my Prefab in the Inspector)制作了預制件 . 我的Player Prefab位于Resources檔案夾中,是以我可以從代碼(see my Prefab in the Project View)輕松加載它 .

我啟動遊戲的背景執行個體(使用Ctrl B)并将其作為伺服器啟動,然後單擊Unity Editor中的“播放”按鈕并将該執行個體作為用戶端啟動 . 然後Unity報告我之前提到的錯誤 .

有誰知道我可能做錯了什麼?