前面的话

  本文将详细介绍 cocos 中的资源工作流程

概述

【同步性】

  资源管理器中的资源和操作系统的文件管理器中看到的项目资源文件夹是同步的

  在资源管理器中对资源的移动、重命名和删除,都会直接在用户的文件系统中对资源文件进行同步修改。同样的,在文件系统中(如 Windows 上的 Explorer 或 Mac 上的 Finder)对添加或删除资源,再次打开或激活 Cocos Creator 程序后,也会对资源管理器中的资源进行更新

【meda文件】

  所有 assets 路径下的资源都会在导入时生成一份资源配置文件(.meta),这份配置文件提供了该资源在项目中的唯一标识(uuid)以及其他的一些配置信息(如图集中的小图引用,贴图资源的裁剪数据等),非常重要

  在编辑器中管理资源时,meta 文件是不可见的,对资源的任意删除、改名、移动操作,都会由编辑器自动同步相应的 meta 文件,确保 uuid 的引用不会丢失和错乱

  注意在编辑器外部的文件系统中(Explorer,Finder)对资源文件进行删除、改名、移动时必须同步处理相应的 meta 文件。资源文件和其对应的 meta 文件应该保持在同一个目录下,而且文件名相同

  如果在编辑器外部的文件系统中(Explorer,Finder等)进行了资源文件的移动或重命名,而没有同步移动或重命名 meta 文件时,会导致编辑器将改名或移动的资源当做新的资源导入,可能会出现场景和组件中对该资源(包括脚本)的引用丢失

  在编辑器发现有未同步的资源配置文件时,会弹窗警告用户,并列出所有不匹配的 meta 文件。这时无法正确匹配的资源配置文件会从项目资源路径(asset)中移除,并自动备份到 temp 路径下

  如果希望恢复这些资源的引用,将备份的 meta 文件复制到已经移动过的资源文件同一路径下,并保证资源文件和 meta 文件的文件名相同

  注意编辑器在处理资源改名和移动时会生成新的 meta 文件,这些新生成的 meta 文件可以在恢复备份的 meta 后安全删除

图像资源

  图像资源经常被称作贴图、图片,是游戏中绝大部分图像渲染的数据源。图像资源一般由图像处理软件(如 PS )制作而成并输出成 Cocos Creator 可以使用的文件格式,目前包括 JPG 和 PNG 两种

  图像资源在资源管理器中以自身图片的缩略图作为图标。在资源管理器中选中图像资源后,属性检查器下方会显示该图片的缩略图

【SpriteFrame】

  在资源管理器中,图像资源的左边会显示一个和文件夹类似的三角图标,点击就可以展开看到它的子资源(sub asset),每个图像资源导入后编辑器会自动在它下面创建同名的 SpriteFrame 资源

  SpriteFrame 是核心渲染组件 Sprite 所使用的资源,设置或替换 Sprite 组件中的 spriteFrame 属性,就可以切换显示的图像

  为什么会有 SpriteFrame 这种资源?这样的设置是因为除了每个文件产生一个 SpriteFrame 的图像资源(Texture)之外,还有包含多个 SpriteFrame 的图集资源(Atlas)类型

  直接将 SpriteFrame 或图像资源从资源管理器中拖拽到层级管理器或场景编辑器中,就可以直接用所选的图像在场景中创建 Sprite 节点。之后可以拖拽其他的 SpriteFrame 或图像资源到该 Sprite 组件的 Sprite Frame 属性栏中,来切换该 Sprite 显示的图像

  导入图像资源后生成的 SpriteFrame 会进行自动剪裁,去除原始图片周围的透明像素区域。这样在使用 SpriteFrame 渲染 Sprite 时,将会获得有效图像更精确的大小

预制资源

  在场景中编辑好节点后,直接将节点从层级管理器拖到资源管理器,即可创建出一个预制(prefab)

  在场景中修改了预制实例后,在属性检查器中直接点击保存,即可保存对应的预制资源

  在场景中修改了预制实例后,在属性检查器中直接点击回退,即可将预制对象还原为资源中的状态

  每个场景中的预制实例都可以选择要自动同步和还是手动同步。设为手动同步时,当预制对应的原始资源被修改后,场景中的预制实例不会同步刷新,只有在用户手动还原预制时才会刷新;设为自动同步时,该预制实例会自动和原始资源保持同步

图集资源

  图集(Atlas)也称作 Sprite Sheet,是游戏开发中常见的一种美术资源。图集是通过专门的工具将多张图片合并成一张大图,并通过 plist 等格式的文件索引的资源。可供 Cocos Creator 使用的图集资源由 plist 和 png 文件组成

  在游戏中使用多张图片合成的图集作为美术资源,有以下优势:

  1、合成图集时会去除每张图片周围的空白区域,加上可以在整体上实施各种优化算法,合成图集后可以大大减少游戏包体和内存占用

  2、多个 Sprite 如果渲染的是来自同一张图集的图片时,这些 Sprite 可以使用同一个渲染批次来处理,大大减少 CPU 的运算时间,提高运行效率

  要生成图集,首先应该准备好一组原始图片,接下来可以使用专门的软件(texturepacker 或者 Zwoptex)生成图集,使用这些软件生成图集时选择 cocos2d-x 格式的 plist 文件。最终得到的图集文件是同名的 plist 和 png,将 plist 和 png 文件同时拖拽到资源管理器中,就可以生成可以在编辑器和脚本中使用的图集资源了

【自动图集】

  自动图集资源是 Cocos Creator 自带的合图功能,可以将指定的一系列碎图打包成一张大图,在资源管理器中右键,可以在如下菜单中找到 新建 -> 自动图集配置 的子菜单,点击菜单将会新建一个类似 AutoAtlas.pac 的资源,自动图集资源将会以当前文件夹下的所有 SpriteFrame 作为碎图资源。 如果碎图资源 SpriteFrame 有进行配置过,在打包后重新生成的 SpriteFrame 将会保留这些配置

艺术数字资源

  艺术数字资源是一种用户自定义的资源,它可以用来配置艺术数字字体的属性。在资源管理器中右键,可以在如下菜单中找到 新建 -> 艺术数字配置 的子菜单,点击菜单将会新建一个类似 LabelAtlas.labelatlas 的资源。艺术数字资源在使用之前需要进行一些配置,比如关联渲染的图片资源,设置每一个字符的宽高和起始字符信息

  在资源管理器中选中一个艺术数字资源后,属性检查器面板将会显示艺术数字资源的所有可配置项,配置完成后需要点击属性检查器右上角的绿色的打勾按钮来保存设置

  使用艺术数字资源非常简单,只需要新建一个 Label 组件,然后把新建好的艺术数字资源拖到 Label 组件的 Font 属性即可

字体资源

  使用 Cocos Creator 制作的游戏中可以使用三类字体资源:系统字体,动态字体和位图字体

  系统字体是通过调用游戏运行平台自带的系统字体来渲染文字,不需要用户在项目中添加任何相关资源。要使用系统字体,需要使用Label组件中的 Use System Font 属性

  目前 Cocos Creator 支持 TTF 格式的动态字体。只要将扩展名为 TTF 的字体文件拖拽到资源管理器中,即可完成字体资源的导入

  位图字体由 fnt 格式的字体文件和一张 png 图片组成,fnt 文件提供了对每一个字符小图的索引。这种格式的字体可以由专门的软件生成

  在导入位图字体时,需要将 fnt 文件和 png 文件同时拖拽到资源管理器中

  字体资源需要通过 Label 组件来渲染,在层级管理器中点击左上角的创建节点按钮,并选择创建渲染节点/Label(文字),就会在场景中创建出一个带有 Label 组件的节点。也可以通过主菜单的节点/创建渲染节点/Label(文字)来完成创建,效果一样

  字体组件默认使用系统字体作为关联的资源,如果想要使用导入到项目中的 TTF 或位图字体,可以将字体资源拖拽到创建的 Label 组件中的 File 属性栏中

  可以根据项目需要,自由的切换同一个 Label 组件的 File 属性,来使用 TTF 或位图字体。切换字体文件时,Label 组件的其他属性不受影响

  如果要恢复使用系统字体,可以点击 Use System Font 的属性复选框,来清除 File 属性中指定的字体文件

cocos 资源工作流程的更多相关文章

  1. CocosCreator资源工作流程

    --摘自官方文档 资源工作流程 添加资源 资源管理器 提供了三种在项目中添加资源的方式: 通过 创建按钮 添加资源 在操作系统的文件管理器中,将资源文件复制到项目资源文件夹下,之后再打开或激活 Coc ...

  2. cocos 场景制作流程

    前面的话 本文将详细介绍 cocos 场景制作流程 节点和组件 Cocos Creator 的工作流程是以组件式开发为核心的,组件式架构也称作组件-实体系统,简单的说,就是以组合而非继承的方式进行实体 ...

  3. Spark基本工作流程及YARN cluster模式原理(读书笔记)

    Spark基本工作流程及YARN cluster模式原理 转载请注明出处:http://www.cnblogs.com/BYRans/ Spark基本工作流程 相关术语解释 Spark应用程序相关的几 ...

  4. git工作流程

    git工作流程 一般工作流程如下: 克隆 Git 资源作为工作目录. 在克隆的资源上添加或修改文件. 如果其他人修改了,你可以更新资源. 在提交前查看修改. 提交修改. 在修改完成后,如果发现错误,可 ...

  5. ARP协议工作流程

    地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议.主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机, ...

  6. Hadoop随笔(一):工作流程的源码

    一.几个可能会用到的属性值 1.mapred.map.tasks.speculative.execution和mapred.reduce.tasks.speculative.execution 这两个 ...

  7. 前端工作流程自动化——Grunt/Gulp 自动化

    什么是自动化 先来说说为什么要自动化.凡是要考虑到自动化时,你所做的工作必然是存在很多重复乏味的劳作,很有必要通过程序来完成这些任务.这样一来就可以解放生产力,将更多的精力和时间投入到更多有意义的事情 ...

  8. yarn的基本组成和工作流程

    yarn是负责资源管理的,协调各个应用程序的资源使用情况 一.基本组成 yarn主要由以下几个部分组成 1.resourcemanager 主要负责资源的调度和应用程序的管理 (1)调度器 调度器是将 ...

  9. springmvc工作流程

    Spring MVC工作流程图   图一   图二    Spring工作流程描述       1. 用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServle ...

随机推荐

  1. SmartSql Zookeeper分布式配置

    安装 SmartSql.ZooKeeperConfig Install-Package SmartSql.ZooKeeperConfig Demo string connStr = "192 ...

  2. 浅谈基于Intellij IDEA Maven的配置与使用

    在java开发中,引入jar包的方式从种类上划分,可分为自动导入和手动导入,然而,手动导入繁琐,不是很适合当前开发模式,手动导入也被自动导入所取代. 当前,Maven和Gradle是比较主流的自动导入 ...

  3. cocos creator主程入门教程(六)—— 消息分发

    五邑隐侠,本名关健昌,10年游戏生涯,现隐居五邑.本系列文章以TypeScript为介绍语言. 本篇开始介绍游戏业务架构相关的内容.在游戏业务层,所有需要隔离的系统和模块间通信都可以通过消息分发解耦. ...

  4. Java 初始化a=2 打印a+++a++为5

    这段程序大概这样: public static void main(String[] args){ int a = 2; System.out.println(a+++a++); } 编译后的字节码为 ...

  5. Android 注解框架对比

    Java的注解(Annotation)相当于一种标记,在程序中加入注解就等于为程序打上某种标记,标记可以加在包,类,属性,方法,本地变量上.然后你可以写一个注解处理器去解析处理这些注解(人称编译时注解 ...

  6. Oracle Sql 胡乱记

    /Oracle查询优化改写/ --1.coalesce 返回多个值中,第一个不为空的值 select coalesce('', '', 's') from dual; --2.order by --- ...

  7. Linux学习历程——Centos 7 chown命令

    一.命令介绍 Linux是多人多工操作系统,所有的文件皆有拥有者.利用 chown 将指定文件的拥有者改为指定的用户或组, 用户可以是用户名或者用户ID:组可以是组名或者组ID:文件是以空格分开的要改 ...

  8. cmd黑客入侵命令大全

    nbtstat -A ip 对方136到139其中一个端口开了的话,就可查看对方最近登陆的用户名(03前的为用户名)-注意:参数-A要大写 tracert -参数 ip(或计算机名) 跟踪路由(数据包 ...

  9. C# -- 使用FileInfo获取文件信息

    C# -- 使用FileInfo获取文件信息 1. 代码实现 static void Main(string[] args) { GetFileInfo(@"D:\Test.xlsx&quo ...

  10. UOJ #269. 【清华集训2016】如何优雅地求和

    UOJ #269. [清华集训2016]如何优雅地求和 题目链接 给定一个\(m\)次多项式\(f(x)\)的\(m+1\)个点值:\(f(0)\)到\(f(m)\). 然后求: \[ Q(f,n,x ...