场景资源

    创建场景目前有以下几种方式:

    1. 资源管理器 中右键点击想要放置场景文件的文件夹,然后选择 创建 -> Scene 即可。为了使项目具备良好的文件夹目录结构,强烈建议使用该方法创建场景。

    2. 资源管理器 中点击左上角的 + 创建按钮,然后选择 Scene 即可。

      create scene 2

    3. 在顶部菜单栏中选择 文件 -> 新建场景,即可在 场景编辑器 中直接创建一个新场景。但 资源管理器 中不会出现新场景文件,需要在保存场景时弹出的 保存场景 窗口中手动保存场景文件,保存完成后才会在 资源管理器 的根目录下出现 scene.scene 场景文件。

    方法一:使用快捷键 Ctrl + S(Windows)或 Command + S(MacOS)来快速保存场景。

    方法二:在顶部菜单栏中选择 文件 -> 保存场景

    资源管理器 中,通过双击场景文件打开场景。
    如果需要在游戏过程中切换场景,可通过 等 API 来实现游戏中动态场景加载及切换。

    双击打开场景文件后,可以看到 层级管理器 中的 是场景节点树的根节点。选中 scene 节点,在 属性检查器 中可设置场景是否自动释放,以及整个场景相关的属性,包括环境光设置,阴影设置、全局雾和天空盒设置。

    场景资源的自动释放,详情请参考下文 场景资源自动释放策略 部分的内容。

    各类属性的详细说明请参考:

    双击打开场景文件后,在 层级管理器 选中 scene 节点,即可在 属性检查器 中设置场景是否自动释放:

    scene node set

    从当前场景切换到下一个场景时,如果当前场景不自动释放资源,则该场景中直接或间接引用到的所有资源(脚本动态加载的不算),默认 都不主动释放。反之如果启用了自动释放,则这些引用到的资源 默认 都会自动释放。

    启用了某个场景的资源自动释放后,如果在脚本中保存了对该场景的资源的“特殊引用”,则当场景切换后,由于资源已经被释放,这些引用可能会变成非法的,有可能引起渲染异常等问题。为了让这部分资源在场景切换时不被释放,我们可以使用 增加引用计数来锁住这些资源。

    “特殊引用”:以全局变量、单例、闭包、“动态资源”等形式进行的引用。
    “动态资源”:在脚本中动态创建或动态修改的资源。

    以上关于场景资源自动释放部分的内容可以归纳为下图中的几种情况: