CocosCreator3.8研究笔记(三)CocosCreator 项目结构说明及编辑器的简单使用


我们通过Dashboard 创建一个2d项目,来演示CocosCreator 的项目结构。


在这里插入图片描述


在这里插入图片描述


等待创建完成后,会得到以下项目工程:

在这里插入图片描述


一、assets文件夹


assets文件夹:为资源目录,用来存储所有的本地资源,如各种图片,脚本资源。

只有在这个目录下的内容才会显示在cocos编辑器的资源管理器中。


其中非常重要的一点,assets 中每个文件在导入后都会生成一个和文件同名的.meta 文件。


1、meta 文件的作用

理解 meta 文件的作用和更新时机,对于我们在解决资源冲突、文件丢失、组件属性丢失等问题时,有非常重要的意义。


例如,我们在cocos 编辑器的资源管理器中,创建一个名字为script 的文件夹, 用于存储脚本文件。


在这里插入图片描述


创建完成后得到会生成一个和文件同名的script.meta 文件:

在这里插入图片描述


script.meta 文件内容:

包含 ver (版本)、 uuid(唯一id) 、importer (资源类型)等参数。


在这里插入图片描述


我们再来导入一张图片资源:

在这里插入图片描述


图片资源生成的meta文件内容比较多,除了基本的 veruuid 等信息外,还记录了图片的尺寸、偏移、九宫格等数据。

如下:

{"ver": "1.0.26","importer": "image","imported": true,"uuid": "dadcda60-4fe7-4bdb-86cd-46dbf91c97d4","files": [".jpg",".json"],"subMetas": {"6c48a": {"importer": "texture","uuid": "dadcda60-4fe7-4bdb-86cd-46dbf91c97d4@6c48a","displayName": "20230816090210","id": "6c48a","name": "texture","userData": {"wrapModeS": "clamp-to-edge","wrapModeT": "clamp-to-edge","imageUuidOrDatabaseUri": "dadcda60-4fe7-4bdb-86cd-46dbf91c97d4","isUuid": true,"visible": false,"minfilter": "linear","magfilter": "linear","mipfilter": "none","anisotropy": 0},"ver": "1.0.22","imported": true,"files": [".json"],"subMetas": {}},"f9941": {"importer": "sprite-frame","uuid": "dadcda60-4fe7-4bdb-86cd-46dbf91c97d4@f9941","displayName": "20230816090210","id": "f9941","name": "spriteFrame","userData": {"trimType": "auto","trimThreshold": 1,"rotated": false,"offsetX": 0,"offsetY": 0,"trimX": 0,"trimY": 0,"width": 900,"height": 1100,"rawWidth": 900,"rawHeight": 1100,"borderTop": 0,"borderBottom": 0,"borderLeft": 0,"borderRight": 0,"packable": true,"pixelsToUnit": 100,"pivotX": 0.5,"pivotY": 0.5,"meshType": 0,"vertices": {"rawPosition": [-450,-550,0,450,-550,0,-450,550,0,450,550,0],"indexes": [0,1,2,2,1,3],"uv": [0,1100,900,1100,0,0,900,0],"nuv": [0,0,1,0,0,1,1,1],"minPos": [-450,-550,0],"maxPos": [450,550,0]},"isUuid": true,"imageUuidOrDatabaseUri": "dadcda60-4fe7-4bdb-86cd-46dbf91c97d4@6c48a","atlasUuid": ""},"ver": "1.0.12","imported": true,"files": [".json"],"subMetas": {}}},"userData": {"type": "sprite-frame","fixAlphaTransparencyArtifacts": true,"hasAlpha": false,"redirect": "dadcda60-4fe7-4bdb-86cd-46dbf91c97d4@f9941"}
}

上面这么多信息中,我们只需要关心:UUID

UUID 是每个文件唯一的 id,Creator 引擎通过 UUID 来引用文件, 实现游戏资源管理。


2、.meta 文件更新时机


(1)、打开工程时

打开工程时,Creator 会先扫描 assets 目录,如果哪个文件还没有 meta 文件,此时就会生成。


(2)、更新资源时

  • 在资源管理器中对资源进行文件名修改、改变目录、添加文件、删除文件时。
  • 在操作系统的文件管理器中对 assets 目录中的文件进行增、删、改后,切换到编辑器界面时。

​ 如果一个文件或者目录的 meta 文件不存在,上面两种情况都会触发引擎去生成新的meta 文件。


3、.meta 文件出错时的解决办法


(1)、UUID 发生变化问题


这种情况,一般在多人协作时,经常会出现。 当UUID 发生变化,会使旧的 UUID 对应的资源无法找到, 编辑的界面会出现资源、图片丢失,还可能出现组件属性丢失的情况。


如图:

在这里插入图片描述


UUID 发生变化原因:

前面一个人将新资源添加进项目,忘记切换到编辑器界面使其生成 meta 文件,同时又将新增的文件提交到了版本管理中(不包含 meta 文件)。

后面另一个人,去更新了前面一个人所提交的资源,同时切换到了编辑器界面进行编辑, Creator 会检查到新资源没有 meta 文件便会立即生成。

当第一个人切换到编辑器的时候也会生成 meta 文件,这样两个人的电脑上为同一个文件,但是生成的 meta 文件中的 UUID 都不相同。

这样后面进行资源提交或更新的人,肯定也会遇到冲突。


UUID 发生变化的解决办法和注意事项:

  • 提交前检查是否有新增文件,有新增文件时,注意是否有 meta 文件,没有meta 文件 一定要重新打开cocos 编辑器,生成新的meta文件,然后再一起提交。

  • 提交时如果发现只有新增的 meta 文件,那这个 meta 文件肯定是自己生成的,需要查看是否使用过这个 meta 文件对应的资源。如果没用过,那请最早提交者把 meta 文件提交了。此时千万不能将这个 meta 文件提交上去。**

  • 拉取文件时,注意是否有新增文件,并且是有 meta 文件成对,如果没有的话,提醒之前文件提交者,把 meta 文件一并提交。

(2)、UUID 冲突问题


UUID 是全局唯一的,产生冲突肯定是有不同的文件的 UUID 相同了,一旦出现这个问题,会导致 Cocos Creator 资源管理器目录结构加载不完整。


UUID 冲突问题原因:UUID 冲突一般是误操作引起。


比如在操作系统的文件管理器中移动文件时,将剪切、粘贴不小心操作成了复制、粘贴,同时也把 meta 文件复制过去了。导致项目中同时出现两个相同的 meta 文件。


在这里插入图片描述



从上图提示中可以看到冲突的 UUID 字符串。

UUID 冲突解决办法:

第一步,打开操作系统文件管理或代码编辑器,搜索冲突的UUID,如图:


在这里插入图片描述


第二步,关闭Cocos Creator 编辑器,然后任意删除其中一个 meta 文件。


第三步,再重新打开 Creator 编辑器即可解决。


第四步,虽然通过上面三步,解决了目录结构加载不完整的问题。但是编辑器引用到这个资源的地方就会出现资源丢失,所以还得需要重新编辑或者重新配置一次资源。


为了避免 UUID 冲突发生,最好在引擎资源管理工具中进行添加、移动文件。


二、library文件夹


library 是将 assets 中的资源导入后生成的,这里文件的结构和资源的格式将被处理成最终游戏发布时需要的形式。


library 丢失或损坏的时候,只要删除整个 library 文件夹再打开项目,就会重新生成资源库。


在这里插入图片描述


三、构建目标(build)


在使用编辑器主菜单中的 项目 -> 构建发布 使用默认发布路径发布项目后,编辑器会在项目路径下创建 build 目录,并存放所有目标平台的构建工程。


例如,我们构建一个 web手机端的工程。

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


四、编辑器配置目录(profiles)


profiles 文件夹中包含编辑器的配置信息,包括各目标平台的构建配置信息、场景配置信息等


![在这里插入图片描述](https://img-blog.csdnimg.cn/4d6d5a71f3a84272850ba180a6656d05.png)

在这里插入图片描述


五、项目设置目录(settings)


settings 文件夹保存项目相关的设置,如项目设置面板中的配置信息。


在这里插入图片描述


六、临时文件夹(temp)


temp 顾名思义,是临时文件夹,用于缓存 Cocos Creator 在本地的临时数据文件,可在关闭 Cocos Creator 后手动删除。


七、package.json


package.json 文件和 assets 文件夹一起,是验证 Cocos Creator 项目合法性的标志,只有包括了这两个内容的文件夹才能作为 Cocos Creator 项目打开。


八、tsconfig.json


tsconfig.json 文件,我们在前面在介绍vs code 配置api 智能提示时已经接触过了。


九、扩展插件文件夹(extensions)


extensions 文件夹用于存放项目的自定义扩展插件。如需卸载扩展插件,在 extensions 中删除对应的文件夹即可。


在这里插入图片描述


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/119688.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【机器学习】人工智能概述(文末送书)

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

【算法笔记】二维的哈希与迭代转换;Runtime Error 的解决思路

https://vjudge.net/problem/UVA-11019 如何对一个二维数组进行哈希 对于一个一维数组A(1*M),哈希的方式是: s e e d M − 1 ∗ A [ 0 ] s e e d M − 2 ∗ A [ 1 ] s e e d M − 3 ∗ A [ 2 ] . . . s e e d 0 ∗ A [ M − 1 ] seed^{M-1}*A[0] …

Python安装与Pycharm配置

Python与Pycharm安装 用了一年的Python最近被一个问题难倒了,pip安装一直不能用,报错说被另一个程序使用。被逼到只能重新安装python了,正好记录一下这个过程,写这篇笔记。(突然想到可能是配Arcgis的python接口&#…

微信小程序修改vant组件样式

1 背景 在使用vant组件开发微信小程序的时候,想更改vant组件内部样式,达到自己想要的目的(van-grid组件改成宫格背景色为透明,默认为白色),官网没有示例,通过以下几步修改成功。 2 步骤 2.1 …

【USRP】调制解调系列7:GMSK、MSK、基于labview的实现

MSK 在数字调制中,最小频移键控(Minimum-Shift Keying,缩写:MSK)是一种连续相位的频移键控方式,在1950年代末和1960年代产生。与偏移四相相移键控(OQPSK)类似,MSK同样将…

记录一下自己对linux分区挂载的理解

一直狠模糊,分两个区,一个挂载/, 一个挂载/home 两者是什么关系 实测 先看挂载的内容 然后umount /home后创建一个新文件 再挂载回去 发现旧分区又回来了,说明路径只是个抽象的概念,分区挂载,互相之间数据是不影响…

基于 Zookeeper 实现服务注册和服务发现

文章目录 前言声明前置知识服务注册和发现Zookeeper 工作原理实现过程注册中心服务注册服务发现 总结 前言 无论是采用SOA还是微服务架构,都需要使用服务注册和服务发现组件。我刚开始接触 Dubbo 时一直对服务注册/发现以及 Zookeeper 的作用感到困惑,现…

【Elsevier旗下】中科院1区TOP,影响因子9分+,23天录用!极速见刊!

极速见刊推荐 中科院 1区(TOP) 出版社:Elsevier 影响因子:IF(2022)9.0-10.0 期刊分区:JCR1区,中科院1区(TOP) 检索情况:SCIE 在检&#xff…

微服务之架构演变

随着互联网的发展,网站应用规模不断扩大,网站架构随之不断演变,演变历史大致分为单体应用架构-垂直应用架构-分布式架构-SOA架构-微服务架构-云原生架构 架构演变 单体应用架构 以前网站流量小,只需要一个应用就可以把所有功能…

模拟实现list

目录 list的实现结构节点的实现迭代器的实现第一个模板参数T第二个模板参数Ref第三个模板参数Ptr 实现list中的接口函数插入和删除赋值重载和拷贝构造析构函数 总结 list的实现结构 STL库中的list的结构是双向循环链表,所以我们这里也实现一个双向循环链表 我们这…

中介者模式

1、场景 假如没有总经理。下面三个部门:财务部、市场部、研发部。财务部要发工资,让大家核对公司需要跟市场部和研发部都通气;市场部要接个新项目,需要研发部处理技术、需要财务部出资金。市场部跟各个部门打交道。 虽然只有三个…

无涯教程-JavaScript - DVAR函数

描述 DVAR函数使用与指定条件相匹配的列表或数据库的列中的数字,根据样本估算总体的方差。 语法 DVAR (database, field, criteria)争论 Argument描述Required/Optionaldatabase 组成列表或数据库的单元格范围。 数据库是相关数据的列表,其中相关信息的行是记录,数据的列是…

大数据课程K17——Spark的协同过滤法

文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 了解Spark的协同过滤概念; 一、协同过滤概念 1. 概念 协同过滤是一种借助众包智慧的途径。它利用大量已有的用户偏好来估计用户对其未接触过的物品的喜好程度。其内在思想是相似度的定义…

服务器放在香港好用吗?

​  相较于国内服务器,将网站托管在香港服务器上最直观的好处是备案层面上的。香港服务器上的网站无需备案,因此更无备案时限,购买之后即可使用。 带宽优势 香港服务器的带宽一般分为香港本地带宽和国际带宽、直连中国骨干网 CN2三种。香港…

【python】—— 函数详解

前言: 本期,我们将要讲解的是有关python中函数的相关知识!!! 目录 (一)函数是什么 (二)语法格式 (三)函数参数 (四)函…

轻量、便捷、高效—经纬恒润AETP助力车载以太网测试

随着自动驾驶技术和智能座舱的不断发展,高宽带、高速率的数据通信对主干网提出了稳定、高效的传输要求,CAN(FD)、LIN已无法充分满足汽车的通信需求。车载以太网作为一种快速且扩展性好的网络技术,已经逐步成为了汽车主干网的首选。 此外&…

面试题汇总

文章目录 一. 腾讯二. 华为三. 快手1. Long 的长度和范围,为什么要减 1 (Java基础)2. 线程池配置无界队列了之后,拒绝策略怎么搞,什么时候用到无界队列 (JUC并发) 四. 美团五. 阿里六. 百度七. 字节八. 大疆1. 为什么创建进程开销比线程大? …

Python之作业(一)

Python之作业(一) 作业 打印九九乘法表 用户登录验证 用户依次输入用户名和密码,然后提交验证用户不存在、密码错误,都显示用户名或密码错误提示错误3次,则退出程序验证成功则显示登录信息 九九乘法表 代码分析 先…

win | wireshark | 在win上跑lua脚本 解析数据包

前提说明:之前是在linux 系统上配置的,然后现在 在配置lua 脚本 ,然后 分析指定协议 的 数据包 其实流程也比较简单,但 逻辑需要缕清来 首先要把你 预先准备的 xxx.lua 文件放到wireshark 的安装文件中,(我…

linux深入理解多进程间通信

1.进程间通信 1.1 进程间通信目的 数据传输:一个进程需要将它的数据发送给另一个进程资源共享:多个进程之间共享同样的资源。通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件…