了解Unity3d中的场景

用户名

我对Unity3d中的场景有些困惑,无法找到有关它们的任何资源。

  1. 什么时候应该使用场景?例如,在平台游戏中,每个关卡都必须是不同的场景吗?主菜单会是一个场景吗?
  2. 可以覆盖一个场景吗?
  3. 场景之间的资产如何工作?它们是否附着在每个单独的场景上,并且每次都必须重新加载。可以指定何时不再需要资产吗?
  4. 一个场景如何在场景之间/场景之间的接口发送数据?我知道这是一个广泛的话题,但是我不想向垃圾邮件发送多个问题。
海森布格

什么时候应该使用场景?例如,在平台游戏中,每个关卡都必须是不同的场景吗?主菜单会是一个场景吗?

没有关于此的一般规则。从理论上讲,整个游戏可能只有一个场景。如何组织场景完全取决于您,通常取决于您正在创建的游戏类型。

我认为使用场景至少要考虑3个功能:

  • 它们是所有预先实例化对象逻辑容器,可能有助于将游戏分为多个级别/部分。
  • 您可以序列化场景之间内部的交叉引用(如果GO A需要对GO B的引用,并且它们属于同一场景,则可以序列化引用,并且您不再需要在运行时找到引用的对象)GameObjectsComponents
  • 当您加载(而不是以累加的方式)另一个场景时,已经加载到内存中资源会自动释放

可以覆盖一个场景吗?

是的,您可以使用LoadAdditive不幸的是,一旦将两个场景都加载到内存中,就无法自动区分属于一个或另一个的对象。因此,如果您在第二级环境中添加添加剂,则由您来跟踪先前的环境并在需要时明确销毁它。

场景之间的资产如何工作?它们是否附着在每个单独的场景上,并且每次都必须重新加载。可以指定何时不再需要资产吗?

默认GameObject情况下,加载新场景后,每个场景都会被销毁(除非您使用附加场景加载)。GameObject跨场景生存的一种方法是使用DontDestroyOnLoad对其进行标记

如果您需要共享GameObject的特定“配置”,则可以将其存储为预制件,并在各个场景之间进行引用(但请记住,一旦进入场景,它就是一个预制实例,因此GO与预制件共享初始序列化的对象)而不是覆盖属性,但是同一预制件的2个实例是不同的对象)。

一个场景如何在场景之间/场景之间的接口发送数据?

有几种方法,具体取决于您要共享哪种持久性数据。

  • 对于特定的GameObject实例,请使用使对象幸存DontDestroyOnLoad
  • 如果您有一些不需要附加到特定配置的配置数据,则GameObject可以考虑将ScriptableObject存储AssetDatabase中并对其进行引用。
  • 如果您的数据必须在不同的游戏会话之间持续存在,则可以考虑将其存储到PlayerPrefs中

我不喜欢其他2种方法,仅举几个例子:

  • 使用静态字段有时可以帮助您完成此操作,但是从我的角度来看,它存在一些问题
  • 从磁盘保存和加载(在某些情况下可能很有用,但通常是依赖于平台的方式,您可能会遇到一些麻烦,尤其是在不同的移动平台上)

顺便说一句,这是一个广泛的话题,我希望这个答案可以是一个相当不错的概述。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Unity3d中的多个场景之间切换时播放连续音乐

来自分类Dev

在场景视图Unity3d中绘制GUI内容

来自分类Dev

在Unity3D中异步加载场景不起作用

来自分类Dev

在Unity3d中为多个关卡创建一个加载场景

来自分类Dev

如何在Unity3D中为每个场景强制定位

来自分类Dev

在 Unity3D 场景中更改 Android 状态栏颜色

来自分类Dev

设置SourceTree以将Unity3d场景与UnityYAMLMerge合并

来自分类Dev

在编辑过程中用场景中的预制件替换unity3d对象

来自分类Dev

在Unity3D的构建设置中获取下一个场景的名称?

来自分类Dev

在Unity3d中添加操纵杆,直接添加场景或从播放器脚本初始化场景的正确方法

来自分类Dev

在unity3D中,单击=触摸?

来自分类Dev

在unity3d中隐藏按钮

来自分类Dev

在unity3D中,单击=触摸?

来自分类Dev

Unity3D中的简单矩形

来自分类Dev

类中的GameObject?Unity3D

来自分类Dev

Unity3D中的NullReferenceException

来自分类Dev

UWP 中的 Unity3D TextMeshPro

来自分类Dev

在 Unity3D 中忽略 StopAllAudio()

来自分类Dev

Unity3D-在2D场景中嵌入3D场景

来自分类Dev

Unity3D:我可以对场景进行分层还是可以对场景元素进行遮罩以防止重叠?

来自分类Dev

在Unity3D中加载下一个场景

来自分类Dev

制作场景时的Assetbundle大小问题(.unity3d文件)

来自分类Dev

Unity3d:如何从命令行指定场景进行构建?

来自分类Dev

Unity3d + Facebook SDK-切换场景

来自分类Dev

在Unity3D中加载下一个场景

来自分类Dev

如何在运行时为每个场景(关卡)创建按钮。Unity3d

来自分类Dev

如何在Unity 3d的场景中显示相机?

来自分类Dev

Unity3D中的斜面3d文本

来自分类Dev

了解此自定义事件处理程序和unity3d

Related 相关文章

热门标签

归档