场景资源
在 Cocos Creator 3.0 中,游戏场景(Scene)是游戏开发时组织游戏内容的中心,也是呈现给玩家所有游戏内容的载体。而场景文件本身也作为游戏资源存在,并保存了游戏的大部分信息,也是创作的基础。
创建场景
创建场景三种方式
(1) 右键(强烈推荐)
在资源管理器
中右键点击想要放置场景文件的文件夹,然后选择 创建->Scene
即可.为了使项目具备良好的文件夹目录结构,强烈推荐
左上角加号
在 资源管理器 中点击左上角的 +
创建按钮,然后选择 Scene
即可。
顶部菜单
在顶部菜单栏中选择 文件
-> 新建场景
,即可在 场景编辑器 中直接创建一个新场景。但 资源管理器
中不会出现新场景文件,需要在保存场景时弹出的 保存场景
窗口中手动保存场景文件,保存完成后才会在 资源管理器 的根目录下出现 scene
.scene
场景文件。
保存场景
方法一: 使用快捷键 Ctrl+S 来快速保存场景
方法二:在顶部菜单栏中选择 文件->保存场景
切换场景
在资源管理器
中,通过双击场景文件打开场景
如果需要在游戏过程中切换场景,可通过 director.loadScene
等 API 来实现游戏中动态场景加载及切换。
场景属性
双击打开场景文件后,可以看到层级管理器中的scene
是场景节点树的根节点,选中scene
节点,在属性检查器中可设置场景是否自动释放,以及整个场景相关的属性,包括环境光设置,阴影设置,全局雾和天空盒设置.
场景资源自动释放策略
如果项目中的场景很多,随着新场景的切换,内存占用就会不断上升。除了使用 assetManager.releaseAsset
等 API 来精确释放不使用的资源,我们还可以使用场景的自动释放功能
双击打开场景文件后,在 层级管理器
选中 scene
节点,即可在 属性检查器
中设置场景是否自动释放:
从当前场景切换到下一个场景时,如果当前场景不自动释放资源,则该场景中直接或间接引用到的所有资源(脚本动态加载的不算),默认 都不主动释放。反之如果启用了自动释放,则这些引用到的资源 默认 都会自动释放。
防止特定资源被自动释放
启用了某个场景的资源自动释放后,如果在脚本中保存了对该场景的资源的“特殊引用”,则当场景切换后,由于资源已经被释放,这些引用可能会变成非法的,有可能引起渲染异常等问题。为了让这部分资源在场景切换时不被释放,我们可以使用 Asset.addRef 增加引用计数来锁住这些资源。
注意
特殊引用”:以全局变量、单例、闭包、“动态资源”等形式进行的引用。
“动态资源”:在脚本中动态创建或动态修改的资源。