Unity3d 在Unity中更改场景还是使用不同的ui屏幕更有效?

Unity3d 在Unity中更改场景还是使用不同的ui屏幕更有效?,unity3d,optimization,Unity3d,Optimization,我一直在为iOS开发一款非常简单的游戏,只有三个场景;开始场景、游戏场景和游戏结束场景。我正在运行游戏并使用profiler分析性能,我注意到当我更改场景(使用“SceneManager.LoadLevelAsync()”函数)时,CPU使用率约为90%。当然,这只不过是不到一秒钟的时间,然后CPU使用率又下降了,我的速度达到了70-80 fps左右,但这让我想,对于这样一个简单的游戏来说,仅仅拥有几个UI“屏幕”(基本上就是一组我可以激活和禁用的对象)是否会更有效,这就是我对暂停屏幕所做的(它

我一直在为iOS开发一款非常简单的游戏,只有三个场景;开始场景、游戏场景和游戏结束场景。我正在运行游戏并使用profiler分析性能,我注意到当我更改场景(使用“SceneManager.LoadLevelAsync()”函数)时,CPU使用率约为90%。当然,这只不过是不到一秒钟的时间,然后CPU使用率又下降了,我的速度达到了70-80 fps左右,但这让我想,对于这样一个简单的游戏来说,仅仅拥有几个UI“屏幕”(基本上就是一组我可以激活和禁用的对象)是否会更有效,这就是我对暂停屏幕所做的(它只是一个覆盖)


当然,这本身可能有困难,比如我必须在同一场景中重新启动游戏,但这可能有助于解决我在音乐管理器上构建的静音功能运行问题,该功能在开始场景中实例化,从游戏场景中的一个按钮开始,我不必使用“DontDestroyOnLoad()音乐管理器或我的乐谱管理器上的功能(存储要在游戏场景中显示的乐谱)。但是,有这么多未激活的对象是不是效率很低,或者Unity很擅长管理这样的东西呢?

你是对的,如果你的游戏/应用程序很小,你应该尽可能让它简单,如果你的场景之间的唯一区别只是UI&你的“游戏中”场景没有那么大,您可以确保继续使用同一场景并激活/停用UI


*非活动对象会消耗内存。

在我个人看来,菜单系统应该在一个场景中

每个菜单屏幕有不同的场景将导致开销。即使是几微秒,在菜单之间频繁导航也会影响用户体验。这是因为加载和销毁场景中的每个UI游戏对象

而基于一个场景的菜单系统只需要激活和停用游戏对象,而不需要实例化和销毁

您可以为菜单指定一个根对象,并为其指定一个画布组件,然后您可以为每个屏幕添加不同的面板,并为其指定画布组以平滑地打开和关闭它们

下面是一个创建菜单系统的好教程:


希望这能有所帮助。

非常感谢,这回答了我的问题,也感谢链接到教程,太棒了!谢谢我将对我的游戏做一点修改,特别是因为UI非常简约,所以它不应该占用内存。