我对Unity3d中的场景有些困惑,无法找到有关它们的任何资源。
什么时候应该使用场景?例如,在平台游戏中,每个关卡都必须是不同的场景吗?主菜单会是一个场景吗?
没有关于此的一般规则。从理论上讲,整个游戏可能只有一个场景。如何组织场景完全取决于您,通常取决于您正在创建的游戏类型。
我认为使用场景至少要考虑3个功能:
GameObjects
Components
可以覆盖一个场景吗?
是的,您可以使用LoadAdditive。不幸的是,一旦将两个场景都加载到内存中,就无法自动区分属于一个或另一个的对象。因此,如果您在第二级环境中添加添加剂,则由您来跟踪先前的环境并在需要时明确销毁它。
场景之间的资产如何工作?它们是否附着在每个单独的场景上,并且每次都必须重新加载。可以指定何时不再需要资产吗?
默认GameObject
情况下,加载新场景后,每个场景都会被销毁(除非您使用附加场景加载)。GameObject
跨场景生存的一种方法是使用DontDestroyOnLoad对其进行标记。
如果您需要共享GameObject的特定“配置”,则可以将其存储为预制件,并在各个场景之间进行引用(但请记住,一旦进入场景,它就是一个预制实例,因此GO与预制件共享初始序列化的对象)而不是覆盖属性,但是同一预制件的2个实例是不同的对象)。
一个场景如何在场景之间/场景之间的接口发送数据?
有几种方法,具体取决于您要共享哪种持久性数据。
GameObject
实例,请使用使对象幸存DontDestroyOnLoad
。GameObject
可以考虑将ScriptableObject存储在AssetDatabase中并对其进行引用。我不喜欢其他2种方法,仅举几个例子:
顺便说一句,这是一个广泛的话题,我希望这个答案可以是一个相当不错的概述。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句