空转换需要占用大量CPU能力吗?

时间:2015-03-24 00:16:22

标签: mobile unity3d loading instantiation

长话短说,我正在开发一款适用于移动设备的城市游戏,当玩家移动时,会有很多物品进出游戏。

我尝试过无数种方法来无缝加载/输出对象。

首先,我尝试实例化并销毁用于加载/卸载的对象。对于像普通3D盒子那样简单的加载,这有明显的峰值。

第二次尝试,我将实例化/销毁调用放入他们自己的协同程序中,这使得尖峰不那么严重,但它们仍然很明显。

第三,我决定预先实例化我需要的所有对象,然后将所有不在游戏中的对象保持为deactive(SetActive(false))。事实证明,将active设置为true(甚至在协程内完成)的性能比实例化对象更差。

所以,我终于找到了最后一个加载的想法。我预先加载了所有需要的对象,然后手动遍历每个孩子,禁用每个可能耗尽CPU的组件。诸如脚本,渲染器,碰撞器,音频源,粒子系统,刚体(设置为isKinematic = true)等组件都被禁用,只留下一个具有子转换的对象。现在我终于可以启用一个对象(启用其所有组件),并且游戏的性能没有高峰。

然而,最后一个解决方案有其自己的缺点。如果我预加载太多对象,游戏FPS将受到显着影响。事件虽然除了变换之外没有在对象内部启用任何内容。

所以我的问题是,在场景中进行多次转换(非移动)是否会导致CPU占用率大幅下降?如果是这样,为移动设备连续加载/卸载游戏对象的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

使用名为lod group的组件。您可以设置低多边形模型,它将无法根据相机的距离启用网格渲染器。