相信很多朋友都想知道, Cocos Creator 资源的定义? Cocos Creator 常见的资源包含哪些?Cocos Creator 资源的管理机制是什么样的?



Cocos Creator 中所有继承自 Asset 的类型都统称资源 ,例如:Texture2DSpriteFrameAnimationClipPrefab 等,

它们都是Cocos 引擎统一自动化加载的。



由于CocosCreator资源涉及的知识点比较多,篇幅原因,我们将按照不同的资源类型一一进行介绍。



今天我们主要介绍场景资源



在 Cocos Creator 3.8 中,游戏场景(Scene)是呈现所有游戏内容的载体,而场景文件本身也作为游戏资源存在,并保存了游戏的大部分信息。



1、创建场景的三种方式

  • 资源管理器 中,右键点击需要放置场景文件的文件夹,然后选择 创建 -> Scene
    推荐使用这种方式创建场景。

CocosCreator3.8研究笔记(九)CocosCreator 场景资源的理解_CocosCreator3.8



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

CocosCreator3.8研究笔记(九)CocosCreator 场景资源的理解_javascript_02



CocosCreator3.8研究笔记(九)CocosCreator 场景资源的理解_CocosCreator3.8_03



  • 在顶部菜单栏中选择 文件 -> 新建场景,即可在 场景编辑器 中直接创建一个新场景。

保存完成后才会在 资源管理器 的根目录下出现场景文件。

CocosCreator3.8研究笔记(九)CocosCreator 场景资源的理解_笔记_04



2、保存场景

  • 使用快捷键 Ctrl + S(Windows)或 Command + S(MacOS)来快速保存场景。
  • 在顶部菜单栏中选择 文件 -> 保存场景


3、切换场景

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


4、场景资源自动释放

从当前场景切换到下一个场景时,该场景中直接或间接引用到的所有资源,默认都不会主动释放。

如果项目中的场景很多,随着新场景的切换,内存占用就会不断上升。

除了使用 assetManager.releaseAsset 等 API 来精确释放不使用的资源,还可以使用场景的自动释放功能。



设置方法:

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



CocosCreator3.8研究笔记(九)CocosCreator 场景资源的理解_CocosCreator_05



注意:

启用了场景的资源自动释放后,如果在脚本中保存了对该场景的资源的特殊引用(以全局变量、单例、闭包、“动态资源”等形式进行的引用),则当场景切换后,由于资源已经被释放,这些引用可能会变成非法的,有可能引起渲染异常等问题。

为了解决这个问题,可以使用 Asset.addRef 增加引用计数来锁住这些资源。