- 最后登录
- 2018-12-19
- 注册时间
- 2012-8-20
- 阅读权限
- 90
- 积分
- 54706
- 纳金币
- 32328
- 精华
- 41
|
我正在尝试使用Unity网络引擎,而我遇到了一个非常奇怪的问题。那就是:在MasterServer.RegisterHost()调用后大约10秒钟,Unity 3.5.7开始疯了似的消耗CPU,而且我的帧频大幅下降。如果我查看分析器,它显示的是总开销大于80%。简单地从我的代码中移除MasterServer.RegisterHost()就解决了这个问题,所以显然对我来说这似乎是一个bug,因为大幅度的帧频下降与主服务器的通信之间并没有逻辑上的联系... 示例代码:
代码: using UnityEngine;public class MasterServerBug : MonoBehaviour {
private const string GameType = "SomeTestGame";
private int _remotePort = 25000;void OnGUI () {
// Checking if you are connected to the server or not
if (Network.peerType == NetworkPeerType.Disconnected) {
// If not connected
if (GUI.Button (new Rect(10,10,100,30), "Start Server")) {
// Initialize server and register at the master server
Network.InitializeServer(4, _remotePort, false);
MasterServer.RegisterHost(GameType, "My server", "test");
}
} else {
if (GUI.Button(new Rect(10, 10, 100, 50), "Disconnect"))
{
// Unregister from master server and stop
MasterServer.UnregisterHost();
Network.Disconnect(200);
}if (GUI.Button(new Rect(120, 10, 150, 50), "Unregister server")) {
// Unregister the game at master server
MasterServer.UnregisterHost();
}
}
}
} 只要在一个空的项目中将脚本关联到主摄像机上。 你可以看到该代码简单死了。那么重现这个情况的步骤是: 1)启动服务器
2)等待10秒钟左右
3)观察到突然出现的大幅度的帧频下降
4)点击“取消注册服务器”按钮,就会观察到帧频现在正常了 我还附上了重现这些步骤时分析器的截图。你可以清楚地看到出现了多么巨大的开销,以及在点击了“取消注册服
务器”按钮后一切是如何恢复正常的。
【来源:互联网】
更多精彩教程,尽在web3D纳金网http://www.narkii.com/college/ |
|