我对Unity3d中的场景有些困惑,无法找到关于它们的任何资源。
发布于 2014-01-04 04:46:52
什么时候应该使用场景?例如,在一个平台上,每一个层次都必须是不同的场景吗?主菜单会是一个场景吗?
这方面没有一般的规则。在理论上,你可能只有一个场景的整个游戏。如何组织你的场景完全取决于你,通常取决于你正在创建的游戏类型。
我认为在使用场景时至少要考虑三个特点:
GameObjects
和Components
之间的交叉引用)(如果GO A需要引用B,并且它们属于同一个场景,则可以序列化引用,并且不再需要在运行时找到引用对象)一个重叠的场景可以吗?
是的你可以使用LoadAdditive。不幸的是,一旦两个场景都加载到内存中,就没有自动区分属于一个或另一个对象的方法。因此,如果加载第二级环境的添加,则由您跟踪以前的环境,并在需要时显式地销毁它。
资产是如何在场景之间工作的?它们是否与每一个场景相连,每次都要重新加载。人们可以指定何时不再需要资产吗?
默认情况下,一旦加载了新场景,场景的每个GameObject
都将被销毁(除非使用附加场景加载)。让GameObject
跨场景生存的一种方法是使用DontDestroyOnLoad标记它。
如果您需要共享GameObject的特定“配置”,您可以将其存储为预置文件,并在场景中引用它(但请记住,在场景中它是一个预置实例,因此GO与预制件共享初始序列化的属性,而不是覆盖属性,但相同预置的2个实例是不同的对象)。
如何在场景之间/场景之间的接口之间发送数据?
有几种方法,取决于您想要共享的持久数据类型。
GameObject
实例,让对象使用DontDestroyOnLoad
生存下来。GameObject
的配置数据,您可以考虑在AssetDatabase中存储一个ScriptableObject并引用它。还有两种我不喜欢的方式,但仅举两个例子:
这是一个广泛的话题,我希望这个答案能是一个相当不错的概述。
发布于 2017-05-04 00:37:32
什么时候应该使用场景?例如,在一个平台上,每一个层次都必须是不同的场景吗?主菜单会是一个场景吗?
在你的游戏中需要有多少场景是没有规则的。但是,场景允许您从逻辑上将游戏的各个部分与其馀部分分离开来。你至少要有一场戏。
通过主菜单,如果您指的是带有UI元素的画布,它将在场景中而不是场景本身中。画布只是另一个GameObject,我们经常使用它来显示游戏菜单。我主要创建一个画布GameObject,把一个名为"UIManager“的脚本放在它上,所以我可以在所有场景中访问它。让它成为辛格尔顿,我确保它不会被复制。
一个重叠的场景可以吗?
是的,一次可以加载多少场景是没有限制的。但是,你打算用什么方法来覆盖场景呢?也许有一个比额外加载更好的方法。
资产是如何在场景之间工作的?它们是否与每一个场景相连,每次都要重新加载。人们可以指定何时不再需要资产吗?
资产是您在“项目”层次结构中看到的。我认为您的意思是“场景中的GameObject”,如果是的话,将您的游戏对象看作具有组件的实体(实体组件系统)。当场景的父场景被销毁时,场景中的所有实体都会被销毁,直到明确声明不销毁为止,在某些组件中使用DontDestroyOnLoad (统一情况下的单行为)。被摧毁的人会被收集垃圾。
因此,它们如何加载(或重新加载)取决于您的实现,取决于您是再次实例化/销毁它们,还是将它们实例化的预制件放在缓存对象中,然后再从中检索。
如何在场景之间/场景之间的接口之间发送数据?
海森报道了我能想到的。为了增加一点,它也取决于您想要如何架构您的项目。因此,如果您有一个基础数据结构来保存命令,那么您可以在项目的任何部分使用它
发布于 2021-06-13 22:01:42
大多数游戏都会被组织成每个级别的场景(包括主菜单),但这完全取决于你。如果将数据保存在文本文件或二进制文件中,则可以使用从一个场景到另一个场景的数据。关于如何做到这一点,有很多教程。我发现文档很有帮助。资产在项目中是通用的。你不能重叠场景。
https://stackoverflow.com/questions/20916826
复制相似问题