查看原文
其他

Cocos Creator基础教程—资源结构(5)

张晓衡 Creator星球游戏开发社区 2021-08-09

对于游戏开发来说,除了编辑游戏界面、制作游戏动画、编写代码这些具体的工作外,大家还需要对游戏资源结构要非常清楚。如果马虎上阵,等你把项目运作做起来后,一是工作效率不会太高,二是难以精确控制资源,最后甚至会因此陷入混乱。

1. 资源结构

资源是指用于游戏内容创作所需要的素材,对于Cocos Creator工程来说就是assets目录下的文件,看下图:

资源目录结构

那资源结构就是将众多的资源文件按一定的规则存放和命,以方便使用管理。

2. 资源分类

看上图片所示,我把资源大致分为以下几类:

  • 动画:animation

  • 预制:prefab

  • 场景:scene

  • 脚本:scripts

  • 纹理:textures

  • 声音:sound

  • 配置:config

其中纹理可再细分为:动画帧、背景、字体、UI、图标等(将动画帧图片放到动画目录中会更好,这样可以将动画资源与项目做分离)。分类目录也不要过细,过细会增加重复文件(同名或不同名但内容)出现机率,同时将通用资源和专用资源分开存放,可以再次减少重复文件的产生。

代码的分类也需要注意,我通常将Cocos Creator通用组件(纯脚本组件)放在component目录下。如果组件脚本是与某个prefab紧密关联的,则将他们放在一起,如下图:

预制文件与组件脚本放在一起


上面有两个预制组件Chessboard是棋盘,Chessmain是棋子,他们各关联了一个同名的组件脚本。因为这个两脚本不具备通用性,所以没有把它们放在component目录下,而是将它们与所关联的预制放在文件一起。

我上面只是举个例,不同公司、项目可以根据自己的具体情况设计资源结构,而且非常必要让参与项目的成员(策划、美术、程序)都清楚分类规则。

3. 文件命名

一个普通的游戏项目,资源大致包括有:图片、代码脚本、声音、配置文件、场景预制文件等等,小项目至少也有上百个文件,大的项目甚至过万。仅对资源分类还不能进行快速定位,还需要有文件命规则。

通常图片文件是游戏中用的最多的资源,我之前总结了一个简单的图片文件命公式,供大家参考:

命名公式:前缀+中缀+[后缀]

前缀用于分类,中缀表示功能或特征,后缀可选一般是序号,举几个例子:

  1. img_gold.png:一个金币图片,img表示图像是除UI交互元素之外的统称

  2. btn_blue_ok_0.png: 一个绿色按钮,btn表示一个UI按钮,blue_ok是颜色特征和功能特征(注意的是中缀可以由多个单词组成),后缀0是表示,正常、按下、禁用中的正常状态。

  3. bg_login.png:登录界面的背景图片,bg表示背景,login是功能特征表示用于登录界面。


有了这样的文件命名,在编辑UI时就不会如大海捞针,把时间和精力消耗在资源管理里寻找图片了,直接使用Cocos Creator资源管理器模糊搜索前缀或中缀就能快速锁定目标,看下图:


定位资源并拖放到属性检查器中


上图不小心暴露了我的一个小技巧,如果你用心看了上图会发现,上面的窗口布局中将属性检查器层级管理器资源管理器放在一起,属性设置时减少了鼠标拖拽距离,减少了操作时间和出错机率,从而可以有效提高UI编辑效率,但我发现很少有人这样布局引擎编辑器(我也是最近才开始的!)。

文件命与资源分类相同,可以根据自己实际情况制定自己的文件命名规则,一定要让参与项目的成员知晓且严格遵守,这样可以有效提高开发效率,躲避风险。

4. 小结

我们这篇讲了资源分类与命名在游戏开发中的重要性,结构化不仅可用于资源管理,同时在分析问题时也可以使用结构化的思维。请用心观察体会自己现在或过去的项目,有没有在资源管理上遇到问题,是否注意到了资源结构对项目的影响。

如果这篇文章对你有所帮助,也希望你能分享给更多需要的人,谢谢!


热门文章TOP10,带你遨游奎特尔星球

  1. Cococ Creator基础教程—meta的秘密(3)

  2. Cocos Creator基础教程—color属性的妙用(4)

  3. Cocos Creator基础教程—从zIndex开始(1)

  4. Cocos Creator基础教程—聊聊scale与size属性(2)

  5. Creator组件化的编程探索

  6. Creator模块介绍—领略模块化的力量

  7. 探索CocosH5正确的开发姿势

  8. 英雄与魔灵

  9. 游戏开发心悟

  10. 魔灵传说


欢迎关注「奎特尔星球」微信公众号,来我们一起成长!


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存