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报告我之前提到的错误 .

有谁知道我可能做错了什么?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值