【02】Cocos游戏开发引擎从0开发一款游戏-cocos项目目录结构熟悉-调试运行项目-最重要的assets资源文件认识-场景sense了解-优雅草卓伊凡
【02】Cocos游戏开发引擎从0开发一款游戏-cocos项目目录结构熟悉-调试运行项目-最重要的assets资源文件认识-场景sense了解-优雅草卓伊凡
开发背景
接下来我们直接打开我们的项目开始进一步操作,
实战开发
导入项目

我把得到的项目解压到本地,我们开始打开他

导入项目,选择对应路劲,导入成功后双击打开项目

中间这个画布我们可以用鼠标滚轮放大和缩小

这是一款娱乐游戏,甲方是拥有五证齐全加版号的一款要上架的娱乐房卡游戏
项目结构
Cocos Creator 项目有着清晰且规范的目录结构,下面为你详细介绍各个主要目录及其功能。
根目录
项目根目录包含了整个项目的核心文件和配置信息,以下是常见的根目录下的文件夹和文件:
| 文件夹 / 文件 | 说明 |
|
| 这是项目中最为重要的目录,用于存放所有的游戏资源,像脚本、纹理、音频、场景等都存于此。开发者日常开发中的大部分资源操作都在这个目录下进行。 |
|
| 存放项目所依赖的外部库文件,这些库文件可以是 Cocos Creator 官方提供的,也可以是开发者自行引入的第三方库。 |
|
| 包含项目的各种设置文件,例如构建发布设置、编辑器偏好设置等。这些设置文件会影响项目的构建和开发环境。 |
|
| 作为临时文件的存储目录,在项目开发和构建过程中,Cocos Creator 会生成一些临时文件,这些文件会存放在该目录下。 |
|
| 用于存放项目的插件包。开发者可以通过安装插件来扩展 Cocos Creator 的功能,安装后的插件就会存放在这个目录中。 |
|
| 项目构建输出的目录,当你使用 Cocos Creator 进行项目构建时,生成的可运行文件会存放在这里,根据不同的平台和构建配置,会生成不同格式的文件。 |
|
| 项目的配置文件,记录了项目的基本信息、依赖关系等重要配置,Cocos Creator 会根据这个文件来加载和管理项目。 |
assets 目录
assets 目录是开发者重点关注的目录,它包含了项目所需的各种资源,以下是其常见的子目录:
| 文件夹 | 说明 |
|
| 存放项目的脚本文件,这些脚本使用 TypeScript 或 JavaScript 编写,用于实现游戏的各种逻辑,如角色控制、游戏规则、事件处理等。 |
|
| 用于存放纹理资源,也就是各种图片文件,包括角色精灵图、背景图片、图标等,这些图片会在游戏中显示。 |
|
| 存放项目的音频资源,如背景音乐、音效等,能为游戏增添丰富的听觉体验。 |
|
| 存储项目的场景文件,每个场景文件对应游戏中的一个独立场景,如主菜单场景、游戏关卡场景等。 |
|
| 预制体文件夹,预制体是一种可重复使用的节点组合,将一些常用的节点和组件组合成预制体后,可以在不同的场景中方便地复用。 |
|
| 材质文件目录,材质用于定义物体的外观属性,如颜色、光泽度、纹理映射等,在 3D 游戏开发中使用较多。 |
|
| 存放动画资源,包括角色动画、UI 动画等,通过动画编辑器创建的动画文件会保存在这里。 |
示例目录结构展示
收起
plaintext
project-root/
├── assets/
│ ├── Scripts/
│ │ ├── GameManager.ts
│ │ ├── PlayerController.ts
│ │ └── ...
│ ├── Textures/
│ │ ├── player.png
│ │ ├── background.jpg
│ │ └── ...
│ ├── Sounds/
│ │ ├── bgm.mp3
│ │ ├── click.wav
│ │ └── ...
│ ├── Scenes/
│ │ ├── MainMenu.scene
│ │ ├── GameLevel1.scene
│ │ └── ...
│ ├── Prefabs/
│ │ ├── Enemy.prefab
│ │ ├── Coin.prefab
│ │ └── ...
│ ├── Materials/
│ │ ├── Metal.material
│ │ ├── Glass.material
│ │ └── ...
│ └── Animations/
│ ├── PlayerRun.anim
│ ├── ButtonClick.anim
│ └── ...
├── libraries/
│ └── ...
├── settings/
│ └── ...
├── temp/
│ └── ...
├── packages/
│ └── ...
├── build/
│ └── ...
└── project.json
通过这样的目录结构,Cocos Creator 项目能够有效地组织和管理各种资源,提高开发效率和项目的可维护性。
我们再来回顾看下本项目的结构目录,非常清晰。

我们在左上角点击 项目 -运行预览 是可以直接在浏览器运行到预览的

可以看看

不过发现进不去,这个后面再来。

assets 资源文件
我们可以看到 assets 资源文件夹下面有.meta格式文件,他对应着每一个文件名,那么这是
在 Cocos Creator 项目的assets目录下,每个资源文件都会对应一个同名的.meta文件,这些.meta文件起着至关重要的作用,以下为你详细介绍:
资源唯一标识
- 每个
.meta文件中都包含一个全局唯一标识符(GUID)。Cocos Creator 通过这个 GUID 来识别和管理资源,而不是依赖于资源文件的路径和名称。当资源文件的名称或位置发生改变时,只要.meta文件存在且其中的 GUID 不变,Cocos Creator 依然能够正确地找到和引用该资源。例如,你将一个图片资源从assets/Textures目录移动到assets/NewTextures目录,只要对应的.meta文件跟着移动,项目中对该图片资源的引用不会受到影响。
资源导入配置
.meta文件记录了资源的导入配置信息,这些配置决定了资源在导入引擎时的处理方式。不同类型的资源有不同的导入配置选项:
-
- 纹理资源:配置包括纹理的压缩格式、滤波模式、是否开启 mipmap 等。比如,你可以通过
.meta文件将一张图片设置为特定的压缩格式以减小文件大小,同时保持合适的显示质量。 - 音频资源:可以配置音频的加载方式(如流式加载或预加载)、音量、循环模式等。
- 模型资源:涉及模型的缩放、旋转、材质映射等设置。
- 纹理资源:配置包括纹理的压缩格式、滤波模式、是否开启 mipmap 等。比如,你可以通过
资源依赖关系
.meta文件会记录资源之间的依赖关系。例如,一个预制体资源可能依赖于多个纹理、音频和脚本资源,.meta文件会记录这些依赖信息。当 Cocos Creator 加载该预制体时,会根据.meta文件中的依赖关系自动加载所需的其他资源,确保资源的正确加载和使用。
版本控制与协作开发
- 在多人协作开发或使用版本控制系统(如 Git)时,
.meta文件非常重要。它可以帮助团队成员保持资源的一致性,避免因资源引用问题导致的冲突。当团队成员拉取代码时,.meta文件会确保每个人使用的资源配置和引用关系是相同的。
资源状态管理
.meta文件还可以记录资源的一些状态信息,如资源是否被标记为隐藏、是否为只读等。这些状态信息可以帮助开发者更好地管理项目资源,提高开发效率。
总之,.meta文件在 Cocos Creator 项目中是不可或缺的,它确保了资源的正确管理、加载和使用,是项目稳定开发和维护的重要保障。在开发过程中,要注意不要随意删除或修改.meta文件,以免导致资源引用错误。
其次我们要知道场景概念
场景 sense
在 Cocos 开发中,Scene(场景)是一个核心概念,它是游戏或应用程序的一个独立单元,以下从多个方面详细介绍场景的概念:
定义与基本作用
- 定义:场景是游戏世界中的一个特定部分,就像戏剧中的一幕,它包含了一组相互关联的游戏元素,这些元素共同构成了一个完整的游戏画面或交互界面。
- 基本作用:作为游戏内容的组织和管理单位,负责承载游戏中的各种元素,如角色、道具、背景等,并控制这些元素之间的交互和行为,为玩家提供特定的游戏体验。
场景的组成要素
- 节点(Node):场景的基本构建块,代表场景中的一个对象。节点可以是一个角色、一个道具、一个 UI 元素等。节点可以包含各种组件(Component),用于实现不同的功能。例如,一个精灵节点可以包含一个 Sprite 组件,用于显示图片;一个文本节点可以包含一个 Label 组件,用于显示文字。
- 组件(Component):附加在节点上的功能模块,用于实现节点的特定行为。Cocos Creator 提供了许多内置组件,如 Sprite(精灵)、Label(标签)、Button(按钮)、RigidBody(刚体)等,开发者也可以自定义组件。组件可以控制节点的外观、行为、物理属性等。
场景的类型与应用
- 主菜单场景:作为游戏的入口,通常包含开始游戏、设置、退出等功能按钮。玩家可以在这个场景中选择进入游戏的不同模式或进行游戏设置。例如,在一个角色扮演游戏中,主菜单场景可能会提供 “新游戏”“继续游戏”“设置”“退出” 等选项。
- 游戏关卡场景:实现游戏的主要玩法,包含各种游戏元素和规则。在这个场景中,玩家需要完成特定的任务或目标,如击败敌人、收集道具、通过关卡等。例如,在一个平台跳跃游戏中,游戏关卡场景会包含玩家角色、障碍物、敌人、金币等元素,玩家需要控制角色避开障碍物,击败敌人,收集金币并到达关卡终点。
- 游戏结束场景:当玩家完成游戏或游戏失败时显示的场景,通常会显示游戏结果、得分等信息,并提供重新开始游戏或返回主菜单的选项。
场景的切换与管理
- 场景切换:在游戏过程中,根据游戏逻辑需要在不同的场景之间进行切换。例如,当玩家点击主菜单中的 “开始游戏” 按钮时,游戏会从主菜单场景切换到游戏关卡场景;当玩家完成一个关卡或游戏失败时,游戏会从游戏关卡场景切换到游戏结束场景。在 Cocos Creator 中,可以使用
director.loadScene方法来实现场景的切换。示例代码如下:
typescript
import { director } from 'cc';// 切换到指定场景
director.loadScene('GameLevel1');
- 场景管理:对于包含多个场景的游戏,需要进行有效的场景管理。可以使用场景管理器来控制场景的加载、卸载、切换等操作,确保游戏的流畅运行。例如,可以在场景切换时进行资源的预加载和释放,避免出现卡顿现象。
场景的编辑与调试
- 场景编辑:在 Cocos Creator 的场景编辑器中,可以直观地创建、编辑和组织场景。通过拖拽节点、添加组件、设置属性等操作,可以快速搭建出场景的布局和功能。同时,场景编辑器还提供了实时预览功能,方便开发者及时查看场景的效果。
- 场景调试:在开发过程中,需要对场景进行调试,确保场景中的元素和逻辑正常工作。可以使用 Cocos Creator 提供的调试工具,如断点调试、日志输出等,来定位和解决问题。例如,在脚本中添加日志输出语句,查看变量的值和程序的执行流程,帮助调试场景中的逻辑错误。
当然了我们在这上面可以点击直接切换场景,我们可以看到我们有1个场景 app,这里可以切换

比如我切换到lobby,点击运行

那么就到这里了,

相关文章:
【02】Cocos游戏开发引擎从0开发一款游戏-cocos项目目录结构熟悉-调试运行项目-最重要的assets资源文件认识-场景sense了解-优雅草卓伊凡
【02】Cocos游戏开发引擎从0开发一款游戏-cocos项目目录结构熟悉-调试运行项目-最重要的assets资源文件认识-场景sense了解-优雅草卓伊凡 开发背景 接下来我们直接打开我们的项目开始进一步操作, 实战开发 导入项目 我把得到的项目解压到本地,我们开…...
通过ollama本地化部署deepseek后,通过API方式请求特别的慢
通过ollama本地化部署deepseek后,通过API方式请求特别的慢 一、现象二、原因分析 一、现象 deepseek火了之后,本地私有化部署大模型的门槛大大降低,即使是在家里的windows电脑,也非常简单就可以安装大模型并且使用,最…...
CSS3中布局方式说明
CSS3 提供了多种灵活的布局方式,适用于不同的场景和需求。以下是主要的布局方式及其特点: 1. Flexbox 布局(弹性盒子) 用途:一维布局(水平或垂直方向排列元素)。特点: 通过 display…...
kafka-web管理工具cmak
一. 背景: 日常运维工作中,采用cli的方式进行kafka集群的管理,还是比较繁琐的(指令复杂?)。为方便管理,可以选择一些开源的webui工具。 推荐使用cmak。 二. 关于cmak: cmak是 Yahoo 贡献的一款强大的 Apac…...
T41LQ专为人工智能物联网(AIoT)应用设计,适用于智能安防、智能家居、机器视觉等领域 软硬件资料+样品测试
君正(Ingenic)T系列芯片涵盖多个型号,每个型号根据不同应用需求提供了多个版本。以下是各型号及其主要版本: 1. T23系列: T23N:标准版,适用于移动摄像机、安全监控、视频通话和视频分析等应用…...
Unity中动态切换光照贴图LightProbe的方法
关键代码:LightmapSettings.lightmaps lightmapDatas; LightmapData中操作三张图:lightmapColor,lightmapDir,以及一张ShadowMap 这里只操作前两张: using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI;public cl…...
考研408数据结构线性表核心知识点与易错点详解(附真题示例与避坑指南)
一、线性表基础概念 1.1 定义与分类 定义:线性表是由n(n≥0)个相同类型数据元素构成的有限序列,元素间呈线性关系。 分类: 顺序表:元素按逻辑顺序存储在一段连续的物理空间中(数组实现&…...
C++基础知识(七)之STL算法、智能指针、文件操作、C++异常、断言
二十一、STL算法 STL提供了很多处理容器的函数模板,它们的设计是相同的,有以下特点: 1)用迭代器表示需要处理数据的区间。 2)返回迭代器放置处理数据的结果(如果有结果)。 3)接受…...
vue3.2响应式优化
Vue 3.2 在响应式方面做了诸多优化,进一步提升了性能,下面为你详细介绍: 1. shallowReactive 和 shallowRef 的性能优势 原理:shallowReactive 和 shallowRef 是浅层响应式 API。shallowReactive 仅对对象的第一层属性进行响应式…...
【Linux】线程概念与控制
线程概念与控制 一.Linux线程概念1.什么是线程?2.分页式存储管理1.虚拟地址和页表的由来2.物理内存管理3.页表4.页目录结构5.两级页表的地址转换6.缺页中断(异常) 3.线程的优点(面试题)4.线程的缺点5.线程异常6.线程用途 二.Linux进程VS线程1.进程和线程2.进程的多个…...
零基础学习Python之循环详解:从入门到实践_我的学习Python记录11
零基础学习Python之循环详解:从入门到实践_我的学习Python记录11 一、前言 最近我在学习Python,发现很多编程概念和用法都让我感到陌生,尤其是循环这个概念。今天,我将分享我学到的循环知识,希望能帮助到和我一样的初…...
电子电路中,正负双电源供电的需求原因
1. 允许信号双向摆动 - **交流信号的处理**:许多电路(如音频放大器、运算放大器)需要处理正负交替变化的交流信号(例如声音信号、传感器输出)。如果仅用单正电源(如12V),信号的“负…...
ROS环境搭建
ROS首次搭建环境 注:以下内容都是在已经安装好ros的情况下如何搭建workplace 一、创建工作空间二、创建ROS包三、注意 注:以下内容都是在已经安装好ros的情况下如何搭建workplace 如果没有安装好,建议鱼香ros一步到位:鱼香ROS 我也是装了好久…...
java后端开发day26--常用API(一)
(以下内容全部来自上述课程) 1.Math 1.简单介绍 是一个帮助我们用于进行数学计算的工具类私有化构造方法,所有的方法都是静态的 2.常用方法 不要背,忘了就查文档。 3.练习题 1.判断一个数是否为质数(优化版&am…...
SpringBoot接口自动化测试实战:从OpenAPI到压力测试全解析
引言:接口测试的必要性 在微服务架构盛行的今天,SpringBoot项目的接口质量直接影响着系统稳定性。本文将分享如何通过自动化工具链实现接口的功能验证与性能压测,使用OpenAPI规范打通测试全流程,让您的接口质量保障体系更加完备。…...
分布式中间件:Redis介绍
目录 Redis 概述 Redis 的特点 高性能 丰富的数据结构 持久化 分布式特性 简单易用 Redis 的数据结构 字符串(String) 哈希(Hash) 列表(List) 集合(Set) 有序集合&…...
Python中文自然语言处理库SnowNLP
SnowNLP 介绍 SnowNLP 是一个基于 Python 的中文自然语言处理库,专为处理中文文本而设计。它受到 TextBlob 的启发,但与 TextBlob 不同的是,SnowNLP 没有使用 NLTK,所有的算法都是自己实现的,并且自带了一些训练好的字…...
Linux-计算机网络.udp
1.收发函数: read()/write () ///通用文件读写,可以操作套接字。 recv(,0) /send(,0) ///TCP 常用套机字读写 recvfrom()/sendto() ///UDP 常用套接字读写 ssize_t recv(int sockfd, void *buf, size_t len, …...
【大厂AI实践】清华:清华古典诗歌自动生成系统“九歌”的算法
【大厂AI实践】清华:清华古典诗歌自动生成系统“九歌”的算法 🌟 嗨,你好,我是 青松 ! 🌈 自小刺头深草里,而今渐觉出蓬蒿。 文章目录 **01 自动作诗缘起****1. 诗歌自动写作** **02 九歌的模型…...
Docker安装Postgres_16数据库
PostgreSQL简介 PostgreSQL 是一个功能强大、开源的关系型数据库管理系统(RDBMS),以其可靠性、功能丰富性和可扩展性而闻名。它支持复杂的查询、事务完整性、并发控制以及多种数据类型和扩展功能,适用于各种规模的应用程序; 适用传…...
VSCode 移除EmmyLua插件的红色波浪线提示
VSCode 中安装插件EmmyLua,然后打开lua文件的时候,如果lua代码引用了C#脚本的变量,经常出现 “undefined global variable: UnityEngineEmmyLua(undefined-global)” 的红色波浪线提示,这个提示看着比较烦人,我们可以通…...
快慢指针【等分链表、判断链表中是否存在环】
一、等分链表:找到链表的中间节点 Java 实现 class ListNode {int val;ListNode next;ListNode(int val) {this.val val;this.next null;} }public class MiddleOfLinkedList {public ListNode findMiddleNode(ListNode head) {if (head null) {return null;}L…...
doris:阿里云 DLF
阿里云 Data Lake Formation(DLF) 是阿里云上的统一元数据管理服务。兼容 Hive Metastore 协议。 什么是 Data Lake Formation 因此我们也可以和访问 Hive Metastore 一样,连接并访问 DLF。 连接 DLF 创建 DLF Catalog CREATE CATALOG dlf PROPERTIES ("…...
大模型巅峰对决:DeepSeek vs GPT-4/Claude/PaLM-2 全面对比与核心差异揭秘
文章目录 一、架构设计深度解剖1.1 核心架构对比图谱1.2 动态MoE架构实现架构差异分析表 二、训练策略全面对比2.1 训练数据工程对比2.2 分布式训练代码对比DeepSeek混合并行实现GPT-4 Megatron实现对比 2.3 关键训练参数对比 三、性能表现多维评测3.1 基准测试全景对比3.2 推理…...
C语言基础知识02
格式化输入输出 函数名:printf() 格式控制符:%c //把数据转换成字符型 cahr %d //把数据转换为有符号十进制整型 int short %ld // long %f //把数据转成单精度浮点型 flot %d //double %s …...
Linux的进程观:简单性如何成就强大性(三)
1. 环境变量 1.1. 基本概念 环境变量(environment variables)⼀般是指在操作系统中⽤来指定操作系统运⾏环境的⼀些参数。 如:我们在编写C/C代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪⾥,但是照样可以链接…...
element-ui infiniteScroll 组件源码分享
简单分享 infiniteScroll 组件源码,主要有以下四个方面: 1、infiniteScroll 页面结构。 2、infiniteScroll 组件属性。 3、组件内部的方法。 4、存在的问题。 一、infiniteScroll 页面结构: 二、页面属性。 2.1 infinite-scroll-disab…...
vulnhub靶场之【digitalworld.local系列】的bravery靶机
前言 靶机:digitalworld.local-bravery,IP地址为192.168.10.8 攻击:kali,IP地址为192.168.10.6 kali采用VMware虚拟机,靶机采用virtualbox虚拟机,网卡都为桥接模式 这里官方给的有两种方式,…...
SpringBoot 整合mongoDB并自定义连接池,实现多数据源配置
要想在同一个springboot项目中使用多个数据源,最主要是每个数据源都有自己的mongoTemplate和MongoDbFactory。mongoTemplate和MongoDbFactory是负责对数据源进行交互的并管理链接的。 spring提供了一个注解EnableMongoRepositories 用来注释在某些路径下的MongoRepo…...
部署Joplin私有云服务器postgres版-docker compose
我曾经使用过一段时间 Joplin,官方版本是收费的,而我更倾向于将数据掌握在自己手中。因此,在多次权衡后,我决定自己搭建 Joplin 服务器并进行尝试。 个人搭建的版本与数据库直连,下面是使用 Docker Compose 配置数据库…...
