Ich spiele mit der Networking HLAPI von Unity 5 herum. Ich möchte den NetworkManager nicht verwenden, da ich nicht für Unity Multiplayer-Dienste (Matchmaker- und Relay-Server) bezahlen möchte.UNet: Fehler beim Erstellen des Serverobjekts (NIEMALS mit NetworkManager)
Ich versuche, einen Player auf dem Client zu spawnen, wenn der Client eine Verbindung zum Server herstellt. Ich kann den Kunden bekommen, richtig mit dem Server zu verbinden, aber der Laich nicht auf dem Client mit dem folgenden Fehler:
Failed to spawn server object, assetId=b861a662c70615a40971e7bab10e4e14 netId=1
UnityEngine.Networking.NetworkIdentity:UNetStaticUpdate()
Beachten Sie, dass auf dem Server, laicht das Spielerobjekt richtig.
Minimal Repro:
Ich bin in einem Projekt Unity 2D und ich habe das folgende Skript zu meiner Hauptkamera angehängt:
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<AddPlayerMessage>();
GameObject newPlayer = (GameObject)Instantiate(Resources.Load("Prefabs/Player"));
NetworkServer.AddPlayerForConnection(netMsg.conn, newPlayer, msg.playerControllerId);
}
}
Mein Player-Objekt ist ein einfaches Sprit, das ich habe mit der NetworkIdentity Komponente (see my Prefab in the Inspector) zu einem Prefab gemacht. Mein Player-Prefab befindet sich in einem Ressourcen-Ordner, sodass ich es problemlos aus dem Code (see my Prefab in the Project View) laden kann.
Ich starte eine Hintergrundinstanz des Spiels (mit Strg + B) und ich starte es als Server, und dann klicke ich im Unity Editor auf die Schaltfläche Wiedergabe und starte diese Instanz als Client. Unity meldet dann den Fehler, den ich zuvor erwähnt habe.
Weiß jemand, was ich falsch machen könnte?
Wenn jemand NetworkingManager verwendet, um spwaning zu behandeln und irgendwann Fehler darunter: - "Spawn Szene Objekt nicht gefunden für 1 UnityEngine.Networking.NetworkIdentity: UNetStaticUpdate()" versuchen, Ihre Prefab oder Meta-Dateien zu löschen. –