instantiating/destroying 时移动设备上的帧率突然下降?
Sudden frame rate drops on mobile when instantiating/destroying?
我目前正在开发一款手机游戏,我不禁注意到每当实例化或销毁一个对象(在我的例子中是障碍物)时,我的 FPS 突然下降,这对我的游戏玩法至关重要。
为了帮助提出想法,我每 1.5 秒在屏幕顶部实例化一个障碍物,然后向下滚动它们。如果障碍物已经到达屏幕底部,我会销毁它们以防止记忆 leaks/waste.
我对 Unity 开发还是很陌生。我在正确的轨道上吗?什么是防止帧率突然下降的更好解决方案?
作为实例化的一部分,您是否有任何大的/嵌套的循环或复杂的流程(查看您的 awake/start 方法)?
无论如何,研究 object pooling 作为处理此类事情的更好方法。
举个基本的例子,不是每次使用枪支 creating/destroying 射弹,而是给那把枪 "projectile pool" 以在关卡加载时产生 n 射弹。然后在射击的时候只要把弹丸的位置放回枪上,设置弹丸激活即可。撞击后,让射弹停用(如果没有击中任何东西,则在几秒钟后停用)。
我目前正在开发一款手机游戏,我不禁注意到每当实例化或销毁一个对象(在我的例子中是障碍物)时,我的 FPS 突然下降,这对我的游戏玩法至关重要。
为了帮助提出想法,我每 1.5 秒在屏幕顶部实例化一个障碍物,然后向下滚动它们。如果障碍物已经到达屏幕底部,我会销毁它们以防止记忆 leaks/waste.
我对 Unity 开发还是很陌生。我在正确的轨道上吗?什么是防止帧率突然下降的更好解决方案?
作为实例化的一部分,您是否有任何大的/嵌套的循环或复杂的流程(查看您的 awake/start 方法)?
无论如何,研究 object pooling 作为处理此类事情的更好方法。
举个基本的例子,不是每次使用枪支 creating/destroying 射弹,而是给那把枪 "projectile pool" 以在关卡加载时产生 n 射弹。然后在射击的时候只要把弹丸的位置放回枪上,设置弹丸激活即可。撞击后,让射弹停用(如果没有击中任何东西,则在几秒钟后停用)。