查看: 1104|回复: 0
打印 上一主题 下一主题

Unity : 主服务器的使用率导致服务器变慢

[复制链接]
.    

3797

主题

11

听众

5万

积分

首席设计师

Rank: 8Rank: 8

纳金币
32328
精华
41

活跃会员 优秀版主 荣誉管理 论坛元老

跳转到指定楼层
楼主
发表于 2013-1-16 17:07:08 |只看该作者 |倒序浏览
我正在尝试使用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/
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-23 19:17 , Processed in 0.431912 second(s), 32 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部