cocos 资源工作流程

前面的话

  本文将详细介绍 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 属性中指定的字体文件

原文地址:https://www.cnblogs.com/xiaohuochai/p/9368318.html

时间: 2024-10-09 02:18:18

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

Unity 3D 资源工作流程 Asset Workflow

这里我们讲解Unity的单一资源的使用步骤,这些步骤是通用的且仅作为基本动作的概述,例如,我们将讨论如何使用一个三维网格. Create Rough Asset 创建粗糙资源 使用任何Unity所支持的3D建模软件来创建一个粗制版资源,我们的例子将使用Maya,使用资源工作,直到你准备好保存.要查看Unity所支持的应用程序列表,请参阅这个页面. Import 导入 当你最初保存你的资源时,你应该将它保存到项目文件夹的资源文件夹中,当你打开Unity的项目,资源将被检测并导入项目中,查看项目视图

Ajax的工作流程简述

提到Ajax相信我们都不会陌生,不管你是前端开发还是后台数据处理的程序员,ajax的作用就像现在生活中的手机一样,无论是作用还是流程都差不多,这里我们要进行ajax操作后台数据并显示在页面上的话,首先我们这里才用原生态的ajax去实现,第一步要做的就是首先我们得有一个ajax才行,紧接着还得清楚他的工作流程才行啊,下面我就简单谈谈ajax的工作流程.     v作为一个刚接触ajax的信任来说肯定会觉得很神奇,不知道一个小小的ajax竟然有这种强大的功效实现这样复杂的任务,其实不然,当我们除去包

git工作流程

一般工作流程如下: 克隆 Git 资源作为工作目录. 在克隆的资源上添加或修改文件. 如果其他人修改了,你可以更新资源. 在提交前查看修改. 提交修改. 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交. Git 的工作流程示意图: git的工作区.暂存区和版本库 基本概念: 工作区:就是你在电脑里能看到的目录. 暂存区:英文叫stage, 或index.一般存放在"git目录"下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index). 版本库

【嵌入式开发】 Bootloader 详解 ( 代码环境 | ARM 启动流程 | uboot 工作流程 | 架构设计)

作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42462795 转载请著名出处 相关资源下载 :  -- u-boot 源码 : http://download.csdn.net/detail/han1202012/8342761 -- S3C2440 文档 : http://download.csdn.net/detail/han1202012/8342701 -- S5PV210_iROM_Applicati

浏览器渲染的工作流程和图片加载与渲染规则

1 浏览器渲染的工作流程 浏览器的工作原理.以Webkit引擎的工作流程为例,浏览器加载一个HTML页面后进行如下操作 解析HTML[遇到<img>标签加载图片] -> 构建DOM树 加载样式 -> 解析样式[遇到背景图片链接不加载] -> 构建样式规则树 加载javascript -> 执行javascript代码 把DOM树和样式规则树匹配构建渲染树[加载渲染树上的背景图片] 计算元素位置进行布局 绘制[开始渲染图片] 2 图片加载与渲染规则  页面中不是所有的&l

Haddop随笔(一):工作流程的源码

一.几个可能会用到的属性值 1.mapred.map.tasks.speculative.execution和mapred.reduce.tasks.speculative.execution 这两个属性可以决定Map任务和Reduce任务是否开启推测式执行策略.推测式执行策略在Hadoop中用来应对执行缓慢的任务所造成的瓶颈,但是对代码缺陷所导致的任务执行过慢,推测执行是一种反向的作用,应当避免,而Hadoop默认是开启推测式执行的. 2.mapred.job.reuse.jvm.num.ta

Android 4.4 Kitkat Phone工作流程浅析(八)__Phone状态分析

本文来自http://blog.csdn.net/yihongyuelan 转载请务必注明出处 本文代码以MTK平台Android 4.4为分析对象,与Google原生AOSP有些许差异,请读者知悉. 前置文章: <Android 4.4 Kitkat Phone工作流程浅析(一)__概要和学习计划> <Android 4.4 Kitkat Phone工作流程浅析(二)__UI结构分析> <Android 4.4 Kitkat Phone工作流程浅析(三)__MO(去电)流程

第2章 rsync算法原理和工作流程分析

本文通过示例详细分析rsync算法原理和rsync的工作流程,是对rsync官方技术报告和官方推荐文章的解释. 以下是rsync系列篇: 1.rsync(一):基本命令和用法 2.rsync(二):inotify+rsync详细说明和sersync 3.rsync算法原理和工作流程分析 4.rsync技术报告(翻译) 5.rsync工作机制(翻译) 6.man rsync翻译(rsync命令中文手册) 本文目录: 1.1 需要解决的问题 1.2 rsync增量传输算法原理 1.3 通过示例分析r

PHP基础之PHP的工作流程

例如: 客户端输入www.baidu.com=>Apache.HTML.CSS.Javascript=>PHP=>MySQL 注意: 一个纯粹的WEB服务器,是没有处理动态脚本语言功能的,只能处理静态的资源. 工作流程详解: 1.客户端发出请求,如果是动态脚本,Apache会让PHP去处理,PHP根据业务逻辑,去调用数据库. 2.数据库最后将结果返回给PHP,PHP(有可能也会处理HTML.CSS.JavaScript),将这些结果返回给Apache. 3.最后Apache服务器将处理过