Skip to content

场景资源

在 Cocos Creator 3.0 中,游戏场景(Scene)是游戏开发时组织游戏内容的中心,也是呈现给玩家所有游戏内容的载体。而场景文件本身也作为游戏资源存在,并保存了游戏的大部分信息,也是创作的基础。

创建场景

创建场景三种方式

(1) 右键(强烈推荐)

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

左上角加号

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

顶部菜单

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

保存场景

方法一: 使用快捷键 Ctrl+S 来快速保存场景

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

切换场景

资源管理器中,通过双击场景文件打开场景

如果需要在游戏过程中切换场景,可通过 director.loadScene 等 API 来实现游戏中动态场景加载及切换。

场景属性

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

场景资源自动释放策略

如果项目中的场景很多,随着新场景的切换,内存占用就会不断上升。除了使用 assetManager.releaseAsset 等 API 来精确释放不使用的资源,我们还可以使用场景的自动释放功能

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

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

防止特定资源被自动释放

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

注意

  1. 特殊引用”:以全局变量、单例、闭包、“动态资源”等形式进行的引用。

  2. “动态资源”:在脚本中动态创建或动态修改的资源。