CocosCreater资源工作流程
创建与资源管理
- 资源管理器 中的资源和操作系统的文件管理器中看到的项目资源文件夹是同步的,动其一都会同步对另一做出修改
- 管理资源配置文件(.meta)
所有 assets 路径下的资源都会在导入时生成一份 资源配置文件(.meta)这份配置文件提供了该资源在项目中的唯一标识(uuid)以及其他的一些配置信息(如图集中的小图引用,贴图资源的裁剪数据等),非常重要。
在编辑器中管理资源时,meta 文件是不可见的,对资源的任意删除、改名、移动操作,都会由编辑器自动同步相应的 meta 文件,确保 uuid 的引用不会丢失和错乱。
- 处理无法匹配的资源配置文件(.meta)
在编辑器外部的文件系统中进行了资源文件的移动或重命名而没有同步移动或重命名 meta 文件时,会导致编辑器将改名或移动的资源当做新的资源导入,可能会出现场景和组件中对该资源(包括脚本)的引用丢失。
编辑器在处理资源改名和移动时会生成新的 meta 文件
场景资源(Scene)
- 修改场景资源自动释放策略
cc.assetManager.releaseAsset 等 API 来精确释放不使用的资源,我们还可以使用场景的自动释放功能。要配置自动释放,可以在 资源管理器 中选中所需场景,然后在 属性检查器 中设置 自动释放资源 选项,该项默认开启。
- 防止特定资源被自动释放
启用了某个场景的资源自动释放后,如果在脚本中保存了对该场景的资源的“特殊引用”,则当场景切换后,由于资源已经被释放,这些引用可能会变成非法的,有可能引起渲染异常等问题。为了让这部分资源在场景切换时不被释放,我们可以使用 Asset.addRef 增加引用计数来锁住这些资源。
- 修改场景加载策略
图像资源(Texture)
- 只可使用JPG 和 PNG 两种。
- Texture 属性
属性 | 功能说明 |
---|---|
Type | 包括 Raw 和 Sprite 两种模式。Raw 模式表示只会生成贴图资源,Sprite 模式表示还会生成 SpriteFrame 子资源。 |
Premultiply Alpha | 是否开启 Alpha 预乘,勾选之后会将 RGB 通道预先乘以 Alpha 通道。 |
Wrap Mode | 寻址模式,包括 Clamp(钳位)、Repeat(重复) 两种寻址模式 |
Filter Mode | 过滤方式,包括 Point(邻近点采样)、Bilinear(双线性过滤)、Trilinear(三线性过滤) 三种过滤方式。 |
genMipmaps | 是否开启自动生成 mipmappackable 是否允许贴图参与合图 |
- Texture 和 SpriteFrame 资源类型
在 资源管理器 中,图像资源的左边会显示一个和文件夹类似的三角图标,点击就可以展开看到它的子资源(sub asset),每个图像资源导入后编辑器会自动在它下面创建同名的 SpriteFrame 资源。
直接将 SpriteFrame 或图像资源从 资源管理器 中拖拽到 层级管理器 或 场景编辑器 中,就可以直接用所选的图像在场景中创建 Sprite 节点。
资源导入导出
场景、角色、动画和 UI 控件等相对独立的元素在不同项目重复利用时需要导出项目中的文件
- 可以选择的资源包括 .fire 场景文件和 .prefab 预制文件
- 确认依赖
可自行选择选择关联资源,导出成功后会生成 文件名.zip 的压缩包文件
- 资源导入
当导入的资源包含和当前项目里脚本同名的脚本时,将不会导入同名的脚本。如果出现导入资源的 UUID 和项目中现有资源 UUID 冲突的情况,会自动为导入资源生成新的 UUID,并更新在其他资源里的引用。
字体资源
- 支持TTF 格式的动态字体与 fnt 格式的的位图字体
- 使用时直接拖拽到Lable指定属性位置
粒子资源(ParticleSystem)
- 将 Cocos2d 支持的粒子 .plist 文件直接放到工程资源目录下。
- 一般单独放在paticle文件夹下
- 导入时直接托到层级管理器或者场景界面或拖到组件的File属性
骨骼动画资源(Spine)
- 骨骼动画所需资源有:
.json/.skel 骨骼数据
.png 图集纹理
.txt/.atlas 图集数据
- 使用同粒子资源,但属性不同要拖到Spine 组件的 Skeleton Data 属性中
骨骼动画资源(DragonBones)
- DragonBones 骨骼动画资源包括:
.json/.dbbin 骨骼数据
.json 图集数据
.png 图集纹理
瓦片图资源(TiledMap)
- 地图所需资源有:
.tmx 地图数据
.png 图集纹理
.tsx tileset 数据配置文件(部分 tmx 文件需要)
JSON 资源
- 所有 .json 文件,都会导入为 cc.JsonAsset。
- 关联JSON
// 声明
npcList: {
default: null,
type: cc.JsonAsset,
},
// 读取
var json = this.npcList.json;
loadNpc(json);
- 动态加载
cc.resources.load('configs/npc', function (err, jsonAsset) {
loadNpc(jsonAsset.json);
});
文本资源
- 格式.txt、.plist、.xml、.json、.yaml、.ini、.csv、.md,都会导入为 cc.TextAsset。
- 关联
// 声明
file: {
default: null,
type: cc.TextAsset,
},
// 读取
var text = this.file.text;
- 动态加载
cc.resources.load(path, function (err, file) {
cc.log(file.text);
});