zoukankan      html  css  js  c++  java
  • CocosCreator资源工作流程

    --摘自官方文档

    资源工作流程

    添加资源

    资源管理器 提供了三种在项目中添加资源的方式:

    • 通过 创建按钮 添加资源
    • 在操作系统的文件管理器中,将资源文件复制到项目资源文件夹下,之后再打开或激活 Cocos Creator 窗口,完成资源导入。
    • 从操作系统的文件管理器中(比如 Windows 的文件资源管理器或 Mac 的 Finder),拖拽资源文件到 资源管理器 面板来导入资源

    从外部导入资源

    从操作系统中的其他窗口拖拽文件到 Cocos Creator 窗口中的 资源管理器 面板上,就能够从外部导入资源。该操作会自动复制资源文件到项目资源文件夹下,并完成导入操作。

    导入和同步资源

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

    管理资源配置文件(.meta)

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

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

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

    处理无法匹配的资源配置文件(.meta)

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

    在编辑器发现有未同步的资源配置文件时,会弹窗警告用户,并列出所有不匹配的 meta 文件。

    这时无法正确匹配的资源配置文件会从项目资源路径(asset)中移除,并自动备份到 temp 路径下。

    如果您希望恢复这些资源的引用,请将备份的 meta 文件复制到已经移动过的资源文件同一路径下,并保证资源文件和 meta 文件的文件名相同。注意编辑器在处理资源改名和移动时会生成新的 meta 文件,这些新生成的 meta 文件可以在恢复备份的 meta 后安全删除。

    跨项目导入导出资源

    除了导入基础资源外,从 1.5 版本开始编辑器支持将一个项目中的资源和其依赖完整的导出到另一个项目,详情请阅读 导入导出资源工作流程

    导入其他编辑器项目

    现在可以在 Cocos Creator 中导入其他编辑器的项目。具体的说明请参考:导入其他编辑器项目

    常见资源工作流程

    接下来我们会介绍 Cocos Creator 中主要资源类型和相关工作流程:

    预制资源(Prefab)

    •  
    •  

    脚本资源

    创建和管理场景

    创建场景

    方法一:选择主菜单:文件/新建场景

    方法二:在 资源管理器 中点击创建菜单,创建新场景。

    保存场景

    方法一:使用快捷键 Ctrl + S (Windows) 或 Command + S (Mac)

    方法二:选择主菜单:文件/保存场景

    切换场景

    资源管理器 中,双击需要打开的场景。

    修改场景资源自动释放策略

    如果项目中的场景很多,随着新场景的切换,内存占用就会不断上升。除了使用 cc.loader.release 等 API 来精确释放不使用的资源,我们还可以使用场景的自动释放功能。要配置自动释放,可以在 资源管理器 中选中所需场景,然后在 属性检查器 中设置“自动释放资源”选项,该项默认关闭。
    从当前场景切换到下一个场景时,如果当前场景不自动释放资源,则该场景中直接或间接引用到的所有资源(脚本动态加载的不算),默认都不主动释放。反之如果启用了自动释放,则这些引用到的资源默认都会自动释放。

    已知问题:粒子系统的 plist 所引用的贴图不会被自动释放。如果要自动释放粒子贴图,请从 plist 中移除贴图信息,改用粒子组件的 Texture 属性来指定贴图。

    防止特定资源被自动释放

    启用了某个场景的资源自动释放后,如果在脚本中保存了对该场景的资源的“特殊引用”,则当场景切换后,由于资源已经被释放,这些引用可能会变成非法的,有可能引起渲染异常等问题。为了让这部分资源在场景切换时不被释放,我们可以使用 cc.loader.setAutoRelease 或者 cc.loader.setAutoReleaseRecursively 来保留这些资源。

    “特殊引用”指的是以全局变量、单例、闭包、“特殊组件”、“动态资源”等形式进行的引用。“特殊组件”是指通过 cc.game.addPersistRootNode 方法设置的常驻节点及其子节点上的组件,并且这些组件中包含以字符串 URL 或 UUID,或者以除了数组和字典外的其它容器去保存的资源引用。“动态资源”指的是在脚本中动态创建或动态修改的资源。这些资源如果还引用到场景中的其它资源,则就算动态资源本身不应该释放,其它资源默认还是会被场景自动释放。

    以上关于场景资源自动释放部分的内容可以归纳为下图中的几种情况:

    修改场景加载策略

    资源管理器 中,选中指定场景,可以在 属性检查器 中看到“延迟加载资源”选项,该项默认关闭。

    不延迟加载资源

    加载场景时,如果这个选项关闭,则这个场景直接或间接递归依赖的所有资源都将被加载,全部加载完成后才会触发场景切换。

    延迟加载依赖的资源

    加载场景时,如果选项开启,则这个场景直接或间接依赖的所有贴图、粒子和声音都将被延迟到场景切换后才加载,使场景切换速度极大提升。
    同时,玩家进入场景后可能会看到一些资源陆续显示出来,并且激活新界面时也可能会看到界面中的元素陆续显示出来,因此这种加载方式更适合网页游戏。
    使用这种加载方式后,为了能在场景中更快地显示需要的资源,建议一开始就让场景中暂时不需要显示的渲染组件(如 Sprite)保持非激活状态。

    Spine 和 TiledMap 依赖的资源永远都不会被延迟加载。

    图像资源(Texture)

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

    导入图像资源

    使用默认的资源导入方式就可以将图像资源导入到项目中,之后我们就可以在 资源管理器 中看到如下图所示的图像资源。

    图像资源在 资源管理器 中会以自身图片的缩略图作为图标。在 资源管理器 中选中图像资源后,属性检查器 下方会显示该图片的缩略图。目前图像资源的属性设置功能还没有完善,请不要在 属性检查器 手动修改图像资源的属性设置。

    Texture 和 SpriteFrame 资源类型

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

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

    为什么会有 SpriteFrame 这种资源?这样的设置是因为除了每个文件产生一个 SpriteFrame 的图像资源(Texture)之外,我们还有包含多个 SpriteFrame 的图集资源(Atlas)类型。参考图集资源(Atlas)文档来了解更多信息。

    下面是 Texture 和 SpriteFrame 的 API 接口文档:

    使用 SpriteFrame

    直接将 SpriteFrame 或图像资源从 资源管理器 中拖拽到 层级管理器场景编辑器 中,就可以直接用所选的图像在场景中创建 Sprite 节点。

    之后可以拖拽其他的 SpriteFrame 或图像资源到该 Sprite 组件的 Sprite Frame 属性栏中,来切换该 Sprite 显示的图像。

    动画编辑器 中也可以拖拽 SpriteFrame 资源到已创建好的 Sprite Frame 动画轨道上,详见编辑序列帧动画文档。

    性能优化注意事项

    使用单独存在的 Texture 作为 Sprite 资源,在预览和发布游戏时,将无法对这些 Sprite 进行批量渲染优化的操作。目前编辑器不支持转换原有的单张 Texture 引用到 Atlas 里的 SpriteFrame 引用,所以在开发正式项目时,应该尽早把需要使用的图片合成 Atlas(图集),并通过 Atlas 里的 SpriteFrame 引用使用。详情请继续阅读下一篇。

    预制资源(Prefab)

    创建预制

    在场景中编辑好节点后,直接将节点从 层级管理器 拖到 资源管理器

    即可创建出一个预制:

    保存预制

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

    还原预制

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

    自动同步和手动同步

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

    图中的图标表示当前预制的同步方式,点击图标将会在两种模式之间切换:

    上面的图标表示当前预制使用手动同步,点击图标会切换到自动同步:

    注意,为了保持引擎的精简,自动同步的预制实例有如下限制:

    • 为了便于对各场景实例进行单独定制,场景中的预制根节点自身的 name、active、position 和 rotation 属性不会被自动同步。而其它子节点和所有组件都必须和原始资源保持同步,如果发生修改,编辑器会询问是要撤销修改还是要更新原始资源。
    • 自动同步的预制中的组件无法引用该预制外的其它对象,否则编辑器会弹出提示。
    • 自动同步的预制外面的组件只能引用该预制的根节点,无法引用组件和子节点,否则编辑器会弹出提示。

    这些限制都仅影响编辑器操作,运行时不影响。

    将预制还原成普通节点

    资源管理器 中删除一个预制资源后,你可以将场景中对应的预制实例还原成普通节点。方法是选中预制实例,然后点击菜单 节点 > 还原成普通节点

    预置的选项

    资源管理器 中,选中任一预置资源,可以在 属性检查器 中编辑以下选项。

    设置“优化策略”

    在 v1.8.0 中加入了“优化策略”选项,能优化所选预置的实例化时间,也就是执行 cc.instantiate 所需的时间。可设置的值有:

    • 自动调整(默认):
      设为这个选项后,引擎将根据创建次数自动调整优化策略。初次创建实例时,等同于“优化单次创建性能”,多次创建后将自动“优化多次创建性能”。
    • 优化单次创建性能
      该选项会跳过针对这个 prefab 的代码生成优化操作。
    • 优化多次创建性能
      该选项会启用针对这个 prefab 的代码生成优化操作。

    如果这个预置需要反复执行 cc.instantiate,请选择“优化多次创建性能”,否则保持默认的“自动调整”即可。

    在旧版本引擎中,优化方式固定为“优化多次创建性能”,在需要批量创建对象的场合中效果拔群。但是有不少人将 prefab 作为多人协作或者分步加载的工具,这些 prefab 基本只会实例化一次,就会导致节点创建速度变慢。新版本默认采用“自动调整”以后,很好的解决了这个问题。

    设置“延迟加载资源”

    该项默认关闭。勾选之后,使用 属性检查器 关联、loadRes 等方式单独加载预置资源时,将会延迟加载预置所依赖的其它资源,提升部分页游的加载速度。详情请参考场景的延迟加载

    图集资源(Atlas)

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

    为什么要使用图集资源

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

    • 合成图集时会去除每张图片周围的空白区域,加上可以在整体上实施各种优化算法,合成图集后可以大大减少游戏包体和内存占用
    • 多个 Sprite 如果渲染的是来自同一张图集的图片时,这些 Sprite 可以使用同一个渲染批次来处理,大大减少 CPU 的运算时间,提高运行效率。

    更形象生动的解释可以观看来自 CodeAndWeb 的教学视频What is a Sprite Sheet(什么是图集)

    制作图集资源

    要生成图集,首先您应该准备好一组原始图片:

    接下来可以使用专门的软件生成图集,我们推荐的图集制作软件包括:

    使用这些软件生成图集时请选择 cocos2d-x 格式的 plist 文件。最终得到的图集文件是同名的 plistpng

    导入图集资源

    将上面所示的 plistpng 文件同时拖拽到 资源管理器 中,就可以生成可以在编辑器和脚本中使用的图集资源了。

    Atlas 和 SpriteFrame

    图像资源文档中,我们介绍了 Texture 和 SpriteFrame 的关系。导入图集资源后,我们可以看到类型为 Atlas 的图集资源可以点击左边的三角图标展开,展开后可以看到图集资源里包含了很多类型为 SpriteFrame 的子资源,每个子资源都是可以单独使用和引用的图片。

    接下来对于 Sprite Frame 的使用方法就和图像资源中介绍的一样了,请查阅相关文档。

    碎图转图集

    在项目原型阶段或生产初期,美术资源的内容和结构变化都会比较频繁,我们通常会直接使用碎图(也就是多个单独的图片)来搭建场景和制作 UI。在之后为了优化性能和节约包体,需要将碎图合并成图集。Creator 提供了自动图集功能,可以在发布项目时无缝地将生产阶段的碎图合并成图集,并且自动更新资源索引。请查看 自动图集资源 获取详细用法。

    自动图集资源 (Auto Atlas)

    自动图集资源 作为 Cocos Creator 自带的合图功能,可以将指定的一系列碎图打包成一张大图,具体作用和 Texture Packer 的功能很相近。

    创建自动图集资源

    资源管理器 中右键,可以在如下菜单中找到 新建 -> 自动图集配置 的子菜单,点击菜单将会新建一个类似 AutoAtlas.pac 的资源。

    自动图集资源 将会以当前文件夹下的所有 SpriteFrame 作为碎图资源,以后会增加其他的选择碎图资源的方式。 如果碎图资源 SpriteFrame 有进行配置过,在打包后重新生成的 SpriteFrame 将会保留这些配置。

    配置自动图集资源

    在资源管理器中选中一个 自动图集资源 后,属性检查器 面板将会显示 自动图集资源 的所有可配置项。

    属性

    功能说明

    最大宽度

    单张图集最大宽度

    最大高度

    单张图集最大高度

    间距

    图集中碎图之间的间距

    允许旋转

    是否允许旋转碎图

    输出大小为正方形

    是否强制将图集长宽大小设置成正方形

    输出大小为二次幂

    是否将图集长宽大小设置为二次方倍数

    算法

    图集打包策略, 可选的策略有 [BestShortSideFit, BestLongSideFit, BestAreaFit, BottomLeftRule, ContactPointRule]

    输出格式

    图集图片生成格式,可选的格式有 [png, jpg, webp]

    扩边

    在碎图的边框为扩展出一像素外框,并复制相邻碎图像素到外框中

    不包含未被引用资源

    在预览中,此选项不会生效,构建后此选项才会生效

    配置完成后可以点击 预览 按钮来预览打包的结果,按照当前自动图集配置生成的相关结果将会展示在 属性检查器 下面的区域。 需要注意的是每次配置过后,需要重新点击 预览 才会重新生成预览信息。

    结果分为:

    • Packed Textures, 显示打包后的图集图片以及图片相关的信息,如果会生成的图片有多张,则会往下在 属性检查器 中列出来。
    • Unpacked Textures,显示不能打包进图集的碎图资源,造成的原因有可能是这些碎图资源的大小比图集资源的大小还大导致的,这时候可能需要调整下图集的配置或者碎图的大小了。

    生成图集

    预览项目或者在 Cocos Creator 中使用碎图的时候都是直接使用的碎图资源,在 构建项目 这一步才会真正生成图集到项目中。 生成的大图将会放在 构建目录 下的 res/raw-assets 相对于项目中 assets 目录结构下的对应的目录中,以 AutoAtlas-xx.png 结构命名。 生成项目后可以到对应的目录下检查对应的图集资源是否生成成功了。

    艺术数字资源 (LabelAtlas)

    艺术数字资源 是一种用户自定义的资源,它可以用来配置艺术数字字体的属性。

    创建艺术数字资源

    资源管理器 中右键,可以在如下菜单中找到 新建 -> 艺术数字配置 的子菜单,点击菜单将会新建一个类似 LabelAtlas.labelatlas 的资源。

    艺术数字资源 在使用之前需要进行一些配置,比如关联渲染的图片资源,设置每一个字符的宽高和起始字符信息。

    配置艺术数字资源

    在资源管理器中选中一个 艺术数字资源 后,属性检查器 面板将会显示 艺术数字资源 的所有可配置项。

    属性

    功能说明

    Raw Texture File

    指定渲染图片

    Item Width

    指定每一个字符的宽度

    Item Height

    指定每一个字符的高度

    Start Char

    指定艺术数字字体里面的第一个字符,如果字符是 Space,也需要在这个属性里面输入空格字符

    配置完成后需要点击 属性检查器 右上角的绿色的打勾按钮来保存设置。

    使用艺术数字资源

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

    资源导入导出工作流程

    Cocos Creator 是专注于内容创作的游戏开发工具,在游戏开发过程中,对于每个项目该项目专用的程序架构和功能以外,我们还会生产大量的场景、角色、动画和 UI 控件等相对独立的元素。对于一个开发团队来说,很多情况下这些内容元素都是可以在一定程度上重复利用的。

    在以场景和 Prefab 为内容组织核心的模式下,1.5版本的 Cocos Creator 内置了场景(.fire)和预制(.prefab)资源的导出和导入工具。

    资源导出

    在主菜单选择 「文件->导出资源」,即可打开资源导出工具面板,接下来可以用以下两种方式选择需要导出的资源:

    • 将场景或预制文件从 资源管理器 中拖拽到导出资源面板的资源栏中
    • 点击资源栏右边的「选择」按钮,打开文件选择对话框,并在项目中选取你要导出的资源

    可以选择的资源包括 .fire 场景文件和 .prefab 预制文件。

    确认依赖

    导出工具会自动检查所选资源的依赖列表并列出在面板里,用户可以手动检查每一项依赖是否必要,并剔除部分依赖的资源。被剔除的资源将不会被导出。

    确认完毕后点击 导出 按钮,会弹出文件存储对话框,用户需要指定一个文件夹位置和文件名,点击 存储,就会生成 文件名.zip 的压缩包文件,包含导出的全部资源。

    资源导入

    有了导出的资源包,就可以在新项目中导入这些现成的资源了,在新项目的主菜单里选择 「文件->导入资源」,即可打开资源导入面板。

    点击 Zip 文件路径 输入框右边的 选择 按钮,在文件浏览对话框中选择刚才导出的导出资源压缩包。

    导入过程中也会让用户再次确认导入资源依赖,在这时候也可以取消某些资源的勾选来不导入部分资源。

    设置导入位置

    相比导出过程,导入过程中增加了 导入目标路径 的设置,用户可以点击旁边的 选择 按钮,选择一个项目 assets 路径下的某个文件夹作为导入资源的放置位置。由于导出资源时所有资源的路径都是以相对于 assets 路径来保存的,导入时如果不希望导入的资源放入 assets 根目录下,就可以再指定一层中间目录来隔离不同来源的导入资源。

    设置完成后点击 导入 按钮,会弹出确认对话框,确认后就会把列出的资源导入到目标路径下。

    脚本和资源冲突

    由于 Creator 项目中的脚本不能同名,当导入的资源包含和当前项目里脚本同名的脚本时,将不会导入同名的脚本。如果出现导入资源的 UUID 和项目中现有资源 UUID 冲突的情况,会自动为导入资源生成新的 UUID,并更新在其他资源里的引用。

    工作流应用

    有了全新的资源导入/导出功能,我们可以进一步根据项目和团队需要扩展工作流,比如:

    • 程序和美术分别使用不同的项目进行开发,美术开发好的 UI、角色、动画可以通过导出资源的方式引入到程序负责的主项目中。避免冲突并进一步加强权限管理。
    • 一个项目开发完成后,可以将可重用的资源导出并导入到一个公共资源库中,在公共资源库项目里对该资源进行优化整理后,可以随时再导出到其他项目,大大节约开发成本。
    • 将一个较为完整的功能做成场景或预制,并上传资源包到扩展商店,方便社区直接取用。

    在此基础上还可以发展出更多样化的工作流程,开发团队可以发挥想象力,并使用扩展插件系统进一步定制导入导出的数据和行为,满足更复杂的需要。

    图像资源的自动剪裁

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

    Sprite 组件剪裁相关设置详解

    和图片裁剪相关的 Sprite 组件设置有以下两个:

    • Trim 勾选后将在渲染 Sprite 图像时去除图像周围的透明像素,我们将看到刚好能把图像包裹住的约束框。取消勾选,Sprite 节点的约束框会包括透明像素的部分。
    • Size Mode 用来将节点的尺寸设置为原图或原图裁剪透明像素后的大小,通常用于在序列帧动画中保证图像显示为正确的尺寸。有以下几种选择:
    • TRIMMED 选择这个选项,会将节点的尺寸(size)设置为原始图片裁剪掉透明像素后的大小。
    • RAW 选择这个,会将节点尺寸设置为原始图片包括透明像素的大小。
    • CUSTOM 自定义尺寸,用户在使用 矩形变换工具 拖拽改变节点的尺寸,或通过修改 Size 属性,或在脚本中修改 widthheight 后,都会自动将 Size Mode 设为 CUSTOM。表示用户将自己决定节点的尺寸,而不需要考虑原始图片的大小。

    下图中展示了两种常见组合的渲染效果:

    自带位置信息的序列帧动画

    有很多动画师在绘制序列帧动画时,会使用一张较大的画布,然后将角色在动画中的运动直接通过角色在画布上的位置变化表现出来。在使用这种素材时,我们需要将 Sprite 组件Trim 设为 false,将 Size Mode 设为 RAW。这样动画在播放每个序列帧时,都将使用原始图片的尺寸,并保留图像周围透明像素的信息,这样才能正确显示绘制在动画中的角色位移。

    Trim 设为 true,则是在位移完全由角色位置属性控制的动画中,更推荐使用的方式。

    TexturePacker 设置

    在制作序列帧动画时,我们通常会使用TexturePacker这样的工具将序列帧打包成图集,并在导入后通过图集资源下的 SpriteFrame 来使用。在 TexturePacker 中输出图集资源时,Sprites 分类下的 Trim mode 请选择 Trim,一定不要选择 Crop, flush position,否则透明像素剪裁信息会丢失,您在使用图集里的资源时也就无法获得原始图片未剪裁的尺寸和偏移信息了。

    字体资源

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

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

    导入字体资源

    动态字体

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

    位图字体

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

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

    导入后的字体在 资源管理器 中显示如下:

    注意 为了提高资源管理效率,建议将导入的 fntpng 文件存放在单独的目录下,不要和其他资源混在一起。

    使用字体资源

    字体资源需要通过 Label 组件来渲染,下面是在场景中创建带有 Label 组件的节点的方法。

    使用菜单创建 Label(字体)节点

    层级管理器 中点击左上角的 创建节点 按钮,并选择 创建渲染节点/Label(文字),就会在场景中创建出一个带有 Label 组件的节点。

    您也可以通过主菜单的 节点/创建渲染节点/Label(文字) 来完成创建,效果和上面的方法一样。

    关联字体资源

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

    这时场景中的字体会立刻用刚才指定的字体资源进行渲染。您也可以根据项目需要,自由的切换同一个 Label 组件的 File 属性,来使用 TTF 或位图字体。切换字体文件时,Label 组件的其他属性不受影响。

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

    拖拽创建 Label(字体)节点

    另外一种快捷使用指定资源创建字体节点的方法,是直接从 资源管理器 中拖拽字体文件(TTF 或位图字体都可以)到 层级管理器 中。和上面用菜单创建的唯一区别,是使用拖拽方式创建的文字节点会自动使用拖拽的字体资源来设置 Label 组件的 File 属性。

    位图字体合并渲染

    如果位图字体使用的贴图和其他 Sprite 使用的贴图是同一张,而且位图字体和 Sprite 之间没有插入使用其他贴图的渲染对象时,位图字体就可以和 Sprite 合并渲染批次。在放置位图字体资源时,请把 .fnt 文件、.png 文件和 Sprite 所使用的贴图文件放在一个文件夹下,然后参考 自动图集工作流程 将位图字体的贴图和 Sprite 使用的贴图打包成一个图集,即可在原生和 WebGL 渲染环境下自动享受位图字体合并渲染的性能提升。

    详情请参考 BMFont 与 UI 合图自动批处理

  • 相关阅读:
    top指令
    Trie
    最大公约数
    angular2 获取到的数据无法实时更新的问题
    npm install 的时候出现 write access 导致不能成功安装的问题
    angular 的 @Input、@Output 的一个用法
    windows 安装 apache 服务以及添加 php 解析
    php 性能优化之opcache
    intellij 插件结构(文件结构以及概念层面上的结构)
    jetBrains 插件开发第一课-- 在主菜单栏新增一个菜单
  • 原文地址:https://www.cnblogs.com/allyh/p/9521055.html
Copyright © 2011-2022 走看看