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

news2025/1/13 7:32:03

我们通过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.coloradmin.cn/o/961268.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一文快速了解代理https和sock5协议的区别

一、什么是https协议 HTTPS 协议全称:HyperText Transfer Protocol Secure(超文本传输安全协议),是一种通过计算机网络进行安全通信的传输协议。 作用于应用层(application layer)中。 HTTPS 是在HTTP 的…

[C++]学习中的一个问题

#include<iostream> #include<string> #include<cstring> using namespace std;int main(){char str[31];cout << "----" << sizeof(str) << endl;// 给了memset(str, 0, sizeof(str));for (size_t i 0; i < 31; i){cout &l…

打造高权重店铺的秘密,详解Shopee平台权重评估机制(测评补单)

很多虾皮卖家经常提到的"权重"是指商品或店铺在Shopee平台上的重要性程度。权重评估了商品或店铺是否符合用户需求&#xff0c;并且能否促进订单转化率&#xff0c;为平台带来收益。说白了权重就是给商品和店铺打分的机制&#xff0c;得分越高&#xff0c;权重越高&a…

C语言——函数的使用

无参无返回值 语法格式如下&#xff1a; // 函数定义 void 函数名() {函数体 }// 函数调用 函数名();函数名是标识符的一种&#xff0c;需要遵循规则函数只需要定义一次&#xff0c;反复调用只定义函数, 不调用函数, 函数永远不会被执行案例需求&#xff1a; 编写一个函数&am…

python爬虫-Selenium

一、Selenium简介 Selenium是一个用于Web应用程序测试的工具&#xff0c;Selenium 测试直接运行在浏览器中&#xff0c;就像真正的用户在操作一样。模拟浏览器功能&#xff0c;自动执行网页中的js代码&#xff0c;实现动态加载。 二、环境配置 1、查看本机电脑谷歌浏览器的版…

Idea安装免注册版ChatGPT

文章目录 一、前期准备二、开始使用 一、前期准备 1.准备Idea开发软件并打开&#xff08;VS Code同理&#xff09;! 2.【CtrlAltS】快捷键调出Settings窗口&#xff0c;如图 3.找到NexChatGPT 此插件不需要注册&#xff0c;可以直接使用&#xff08;高级一些的需要会员收费限…

数据库-DML

DML&#xff1a;用来对数据库中表的数据记录进行增、删、改等操作。 添加数据&#xff08;INSERT&#xff09; insert语法&#xff1a; 指定字段添加数据&#xff1a;insert into 表单&#xff08;字段名1&#xff0c;字段名2&#xff09;values&#xff08;值1&#xff0c;值…

QT文件对话框,将标签内容保存至指定文件

一、主要步骤 首先&#xff0c;通过getSaveFileName过去想要保存的文件路径及文件名&#xff0c;其次&#xff0c;通过QFile类实例化一个文件对象&#xff0c;再读取文本框中的内容&#xff0c;最后将读取到的内容写入到文件中&#xff0c;最后关闭文件。 1.txt即为完成上述操作…

学习JAVA打卡第四十九天

Random类 尽管可以使用math类调用static方法random&#xff08;&#xff09;返回一个0~1之间的随机数。&#xff08;包括0.0但不包括0.1&#xff09;&#xff0c;即随机数的取值范围是[0.0&#xff0c;1.0]的左闭右开区间。 例如&#xff0c;下列代码得到1&#xff5e;100之间…

【数据分享】2006-2021年我国城市级别的燃气相关指标(免费获取\20多项指标)

《中国城市建设统计年鉴》中细致地统计了我国城市市政公用设施建设与发展情况&#xff0c;在之前的文章中&#xff0c;我们分享过基于2006-2021年《中国城市建设统计年鉴》整理的2006—2021年我国城市级别的市政设施水平相关指标、2006-2021年我国城市级别的各类建设用地面积数…

如何查一个期刊是不是EI检索

目录 如何查一个期刊是不是EI检索 一、什么是EI&#xff1f; 二、EI检索方法&#xff1a; 三、EI检索视频&#xff1a;(点击放大播放) 四、EI检索图文版 常见问题 如何查一个期刊是不是EI检索 1. 访问EI Compendex官方网站&#xff1a;访问EI Compendex的官方网站…

用ChatGPT做一个Chrome扩展 | 京东云技术团队

用ChatGPT做了个Chrome Extension 最近科技圈儿最火的话题莫过于ChatGPT了。 最近又发布了GPT-4&#xff0c;发布会上的Demo着实吸睛。 笔记本上手画个网页原型&#xff0c;直接生成网页。网友直呼&#xff1a;前端失业了&#xff01; 但我觉着啊&#xff0c;真就外行看热闹…

go语言--锁

锁的基础&#xff0c;go的锁是构建在原子操作和信号锁之上的 原子锁 原子包实现协程的对同一个数据的操作&#xff0c;可以实现原子操作&#xff0c;只能用于简单变量的简单操作&#xff0c;可以把多个操作变成一个操作 sema锁 也叫信号量锁/信号锁 核心是一个uint32值&#…

DCMM数据能力成熟度评估模型--学习笔记(1)

DCMM数据能力成熟度评估模型--学习笔记 1、DCMM简介、结构组成和成熟度评估等级划分1.1 DCMM简介1.2 DCMM结构组成1.3 DCMM关键过程域1.3.1、数据战略&#xff08;指导方针&#xff09;1.3.2、数据治理 &#xff08;机制保障&#xff09;1.3.3、数据架构 (施工图纸)1.3.4、数据…

GPT-4.0技术大比拼:New Bing与ChatGPT,哪个更适合你

随着GPT-4.0技术的普及和发展&#xff0c;越来越多的平台开始将其应用于各种场景。New Bing已经成功接入GPT-4.0&#xff0c;并将其融入搜索和问答等功能。同样&#xff0c;在ChatGPT官网上&#xff0c;用户只需开通Plus账号&#xff0c;即可体验到GPT-4.0带来的智能交流和信息…

SpringBatch结合SpringBoot简单使用实现工资发放批处理操作

最近有接触到批处理相关的需求&#xff0c;学习了下SpringBatch的使用方法。SpringBatch能把复杂的批处理任务进行step分解&#xff0c;并能通过reader和writer满足不同来源数据的处理需求&#xff0c;支持在step定义时设置异常重试策略等&#xff0c;比较方便拓展。简单记录下…

【Java基础】深入理解反射、反射的应用(工厂模式、代理模式)

文章目录 1. Java反射机制是什么&#xff1f;1.2 Java反射例子 2. Java反射机制中获取Class的三种方式及区别&#xff1f;3. Java反射机制的应用场景有哪些&#xff1f;3.1. 优化静态工厂模式&#xff08;解耦&#xff09;3.1.1 优化前&#xff08;工厂类和产品类耦合&#xff…

【仿写spring之ioc篇】一、预期目标以及项目结构介绍

前言 最近系统的学习了一下spring的源码&#xff0c;准备简单仿写一下spring&#xff0c;目前是仿写ioc篇&#xff0c;在ioc篇中将完成整套的bean的生命周期&#xff0c;当然是简单的实现&#xff0c;不会像spring真正源码那样做非常系统性的校验以及接口设计。 预期目标 将…

关于“VS2022无法打开头文件<graphics.h>” 以及编译时 “没有与参数列表匹配的重载函数实例”俩个问题的解决思路

前言&#xff1a; 今天无聊没什么事干&#xff0c;突然看见一条视频梦回20年前杀马特横行的年代&#xff0c;炫酷而又土嗨的灯光闪烁&#xff0c;我又想了想之前写扫雷小游戏的时候&#xff0c;有的人写的游戏界面非常的炫酷&#xff0c;各种颜色都有&#xff0c;抱着没事没事干…

c#事件(event)

概述&#xff1a; C#中的事件是一种特殊的委托&#xff0c;它用于实现观察者模式&#xff0c;允许对象在特定事件发生时通知其他对象。 以下是使用C#事件的示例&#xff1a; 首先&#xff0c;定义一个包含事件的类&#xff1a; public class EventPublisher {// 声明一个事…