相信很多朋友都想知道, Cocos Creator 资源的定义? Cocos Creator 常见的资源包含哪些?Cocos Creator 资源的管理机制是什么样的?
Cocos Creator 中所有继承自 Asset
的类型都统称资源 ,例如:Texture2D
、SpriteFrame
、AnimationClip
、Prefab
等,
它们都是Cocos 引擎统一自动化加载的。
由于CocosCreator资源涉及的知识点比较多,篇幅原因,我们将按照不同的资源类型一一进行介绍。
今天我们主要介绍场景资源。
在 Cocos Creator 3.8 中,游戏场景(Scene)是呈现所有游戏内容的载体,而场景文件本身也作为游戏资源存在,并保存了游戏的大部分信息。
1、创建场景的三种方式
- 在 资源管理器 中,右键点击需要放置场景文件的文件夹,然后选择 创建 -> Scene 。
推荐使用这种方式创建场景。
- 在 资源管理器 中点击左上角的 + 创建按钮,然后选择 Scene
- 在顶部菜单栏中选择 文件 -> 新建场景,即可在 场景编辑器 中直接创建一个新场景。
保存完成后才会在 资源管理器 的根目录下出现场景文件。
2、保存场景
- 使用快捷键 Ctrl + S(Windows)或 Command + S(MacOS)来快速保存场景。
- 在顶部菜单栏中选择 文件 -> 保存场景。
3、切换场景
- 在 资源管理器 中,通过双击需要切换的场景文件,打开即可。
- 游戏中动态切换场景,可通过loadscene等 API 来实现游戏中动态场景加载及切换。
4、场景资源自动释放
从当前场景切换到下一个场景时,该场景中直接或间接引用到的所有资源,默认都不会主动释放。
如果项目中的场景很多,随着新场景的切换,内存占用就会不断上升。
除了使用 assetManager.releaseAsset
等 API 来精确释放不使用的资源,还可以使用场景的自动释放功能。
设置方法:
双击打开场景文件后,在 层级管理器 选中 scene
节点,即可在 属性检查器 中设置场景是否自动释放。
注意:
启用了场景的资源自动释放后,如果在脚本中保存了对该场景的资源的特殊引用(以全局变量、单例、闭包、“动态资源”等形式进行的引用),则当场景切换后,由于资源已经被释放,这些引用可能会变成非法的,有可能引起渲染异常等问题。
为了解决这个问题,可以使用 Asset.addRef 增加引用计数来锁住这些资源。