【问题标题】:Is it more efficient to change scenes in Unity or to have different ui screens?在 Unity 中更改场景或拥有不同的 ui 屏幕更有效吗?
【发布时间】:2017-04-15 05:13:38
【问题描述】:

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

当然,这可能有其自身的困难,就像我必须在同一个场景中重新启动游戏一样,但它可能会帮助我解决运行我在音乐管理器上构建的静音功能的问题,该功能是实例化的在开始场景中,从我的游戏场景中的一个按钮开始,我不必在音乐管理器或我的乐谱管理器上使用“DontDestroyOnLoad()”功能(它存储要在游戏结束时显示的乐谱场景)。但是拥有这么多未激活的对象会不会效率低下,还是 Unity 非常擅长管理这样的事情?

【问题讨论】:

    标签: unity3d optimization


    【解决方案1】:

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

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

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

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

    这里有一个创建菜单系统的好教程:https://www.youtube.com/watch?v=DNqTUwnpLvI

    希望这会有所帮助。

    【讨论】:

    • 非常感谢,这回答了我的问题,也感谢教程的链接,太棒了!
    【解决方案2】:

    你是对的,如果你的游戏/应用程序很小,你应该让它尽可能简单,如果你的场景之间的唯一区别只是 UI 并且你的“游戏中”场景不是那么大,你肯定可以保持使用相同的场景并激活/停用 UI。

    *非活动对象确实会吃掉内存。

    【讨论】:

    • 谢谢!那时我会稍微改变一下我的游戏,特别是因为 UI 非常简约,所以它不应该占用内存。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多