我在Mac上使用Unity3D版本3.x制作联网电脑游戏。我有一个游戏客户端和一个游戏服务器。每当数据从服务器到达客户端时,客户端将冻结一点(约0.5秒),呈现新数据,然后继续。有什么方法可以优化我的游戏,以便传入的数据不会影响用户与游戏客户端的交互吗?
这就是我现在正在做的事情:
我这样做是因为Unity不允许我在我创建的网络线程中创建新的GameObject
。但我想知道我能做些什么来优化用户体验。
答案 0 :(得分:1)
最好首先了解冻结的来源,即是否因等待锁定?由于解析?由于GameObject实例化?所有这三个?
一般解决方案:
如果暂停是由于锁定,请尝试将缓冲分成 不同的bin,使主线程可以访问下一个非空 bin无需获取锁定,或至少是这样的粗粒度锁定。
如果解析是减速,你仍然可以在a中完成所有这些 背景线程。在最终必须实例化GameObjects之前,尽可能多地执行。
如果这是实例化GameObjects的最后一步,那么你 可以尝试预先实例化您期望的对象,只需重新配置即可 他们根据新的网络数据;或者分开瞬间 处理成单独的,增量的阶段,具有不明显的小 暂停,例如首先是根节点,然后是下一个阶段的子节点,依此类推,直到完全重建为止。