Unity 5'in Ağ HLAPI'sı ile oynuyorum. NetworkManager'u kullanmak istemiyorum çünkü Unity'nin Çok Oyunculu hizmetlerini (Matchmaker ve Relay sunucuları) ödemek istemiyorum.UNet: Sunucu nesnesini üretemedi (NetworkManager'I KULLANMAYIN)
İstemci Sunucuya bağlandığında İstemci'de bir Oynatıcıya çalışıyorum. Ben İstemci doğru sunucusuna bağlanmaya alabilirsiniz, ama yumurtlama aşağıdaki hata ile Client başarısız:
Failed to spawn server object, assetId=b861a662c70615a40971e7bab10e4e14 netId=1
UnityEngine.Networking.NetworkIdentity:UNetStaticUpdate()
Not o Server üzerinde, oyuncu nesne doğru çoğaltılır.
Minimal repro:
Bir Birlik 2D projesinde olduğum ve benim ana kamera için aşağıdaki komut dosyası ekledim:
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);
}
}
My Oyuncu amacı, basit bir peri olduğunu ben NetworkIdentity bileşeniyle bir Prefabrik haline getirildi (see my Prefab in the Inspector). Player Prefabrik bir Kaynaklar klasöründedir, böylece kodu kolayca yükleyebilirim (see my Prefab in the Project View).
Oyunun bir arka plan örneğini (Ctrl + B kullanarak) başlatıyorum ve bunu Sunucu olarak başlatıyorum ve ardından Unity Editor'da Oynat düğmesini tıklatıp bu örneği İstemci olarak başlatıyorum. Birlik daha sonra bahsettiğim hatayı rapor eder.
Neyi yanlış yaptığımı bilen var mı?
Spinging'i işlemek için birileri NetworkingManager'ı kullanıyorsa ve bir noktada aşağıdaki hataları alırsanız: - "Spawn sahne nesnesi, 1 UnityEngine.Networking.NetworkIdentity için bulunamadı: UNetStaticUpdate()" prefabrinizi yeniden oluşturmayı veya meta dosyaları silmeyi deneyin. –