1. 项目概述:从“Hello World”到你的第一个游戏世界
很多刚接触 Cocos Creator 的朋友,在安装好编辑器后,面对那个简洁的 Dashboard(仪表盘)界面,常常会感到一丝迷茫:接下来该做什么?点击“新建项目”后,面对一堆模板和选项,又该如何选择?这第一步,看似简单,实则决定了你后续开发体验的顺畅与否。今天,我就以一个过来人的身份,和你详细聊聊在 Cocos Creator 中“创建第一个项目”这件事,这不仅仅是点几下鼠标,更是为你未来的游戏开发之旅打下坚实的地基。
创建项目,远不止是生成一个文件夹那么简单。它涉及到项目类型的选择(是 2D 还是 3D?)、模板的参考价值、引擎版本的兼容性,以及项目目录结构的初始化。一个配置得当的初始项目,能让你在后续添加资源、编写脚本、构建发布时事半功倍,避免很多因初期设置不当而导致的“历史遗留问题”。无论你是想做一个简单的 2D 跳跃游戏,还是一个有复杂场景的 3D 演示,正确的开始都是成功的一半。
2. 项目创建前的核心决策:2D、3D 与模板解析
在点击那个绿色的“新建”按钮之前,有几个关键决策需要你做出。这些选择没有绝对的对错,但不同的选择会导向不同的工作流和资源处理方式。
2.1 2D 与 3D 项目的本质区别
首先,最根本的选择是项目类型:2D 还是 3D?这决定了编辑器默认的坐标系、摄像机、渲染管线以及一系列默认组件的配置。
2D 项目:
- 坐标系:使用二维的笛卡尔坐标系 (X, Y)。节点(Node)的 Position(位置)只有 X 和 Y 值,Z 轴通常用于控制渲染层级(即谁在前谁在后)。
- 默认摄像机:是一个正交投影(Orthographic)摄像机。这意味着物体的大小不会因为距离摄像机的远近而改变,非常适合 UI、平面精灵动画和传统的 2D 卷轴游戏。
- 渲染与组件:默认启用的是适合 2D 的渲染器,并且资源管理器里会默认提供
internal资源库,其中包含常用的 2D 组件如Sprite(精灵)、Label(文本)、Button(按钮)的默认材质和着色器。 - 适用场景:休闲小游戏(如消除类、跑酷类)、UI 密集型应用、2D 动画演示、电子绘本等。
3D 项目:
- 坐标系:使用三维坐标系 (X, Y, Z)。节点在场景中拥有完整的三维位置、旋转和缩放。
- 默认摄像机:是一个透视投影(Perspective)摄像机。物体会产生“近大远小”的视觉效果,营造出空间感和深度感。
- 渲染与组件:启用的是基于物理渲染(PBR)的 3D 渲染管线。默认资源会更偏向 3D 材质和模型。你会接触到
MeshRenderer(网格渲染器)、DirectionalLight(方向光)等 3D 专用组件。 - 适用场景:3D 角色扮演游戏、模拟经营游戏、产品三维展示、虚拟现实(VR)或增强现实(AR)应用原型。
注意:Cocos Creator 是“由 2D 和 3D 融合的引擎”,这意味着在 2D 项目中你完全可以添加 3D 模型和摄像机,反之亦然。但选择正确的初始类型,能让编辑器为你配置好最合适的默认环境,减少后续的手动调整。
2.2 项目模板:空项目 vs. 示例项目
Cocos Creator 提供了几种初始模板:
- Empty (空项目):一个最干净的项目,只包含最基础的场景和一个主摄像机。这是我最推荐新手使用的模板。因为它没有任何预设逻辑和资源,强迫你从零开始理解和搭建一切,学习路径最清晰。你不会被模板中复杂的预设脚本和节点关系搞晕。
- Simple (简单模板):对于 2D,可能包含一个背景和一个可点击的按钮;对于 3D,可能包含一个基础地形和一个立方体。它比空项目多了一点点内容,适合想快速看到一点效果的初学者,但依然保持了结构的简洁。
- Example (示例项目):这是一个宝藏,但我不建议在“第一个项目”时直接使用。它包含了大量官方制作的示例场景和脚本,展示了引擎的几乎全部功能。更适合在你对基础有了一定了解后,作为功能参考和代码范本来查阅和学习。直接用它作为起点,项目会过于臃肿,且目录结构复杂。
我的建议是:对于纯粹的学习和第一个项目,毫不犹豫地选择Empty (空项目)。从零开始构建,你遇到的每一个问题都会成为你理解引擎运作原理的契机。
2.3 项目名称、路径与引擎版本
- 项目名称:使用英文、数字和下划线的组合,不要使用中文和特殊字符(如空格、
@、#等)。例如MyFirstGame或test_project_01。这能避免后续在脚本引用、路径处理和平台构建时可能出现的各种编码问题。 - 项目路径:选择一个空间充足的磁盘位置。路径同样不要包含中文。建议专门建立一个文件夹,如
D:\CocosProjects或~/Documents/CocosProjects,用来存放所有 Cocos 项目,便于管理。 - 引擎版本:Dashboard 会列出你已安装的 Cocos Creator 版本。通常选择最新的稳定版(LTS,长期支持版)。例如,在撰写本文时,3.8.x LTS 是一个很好的选择。LTS 版本意味着它有更长的维护周期和更好的稳定性,适合项目开发。
3. 详解创建流程与初始项目结构
理论说完了,我们动手操作。假设你已经在 Dashboard 中,并且已经安装好了 Cocos Creator 编辑器。
3.1 逐步操作指南
- 启动 Dashboard:打开 Cocos Dashboard,你会看到“项目”和“商店”等标签页。我们关注“项目”页。
- 点击“新建”按钮:通常在页面右上角或左上方,有一个显眼的“新建”按钮,点击它。
- 填写项目信息:
- 项目名称:输入
HelloCocos(遵循上述命名规范)。 - 项目路径:点击“浏览”或手动输入,指向你准备好的英文路径,例如
D:\CocosProjects\HelloCocos。 - 模板:在下拉菜单中选择
Empty。 - 项目类型:根据你的学习目标选择
2D或3D。这里我们以2D为例。 - 引擎版本:选择你已安装的、最新的稳定版(如
3.8.1)。
- 项目名称:输入
- 点击“创建并打开”:耐心等待编辑器初始化项目。这个过程会生成所有必要的文件夹和配置文件。
3.2 初始化后的项目结构深度解析
项目创建成功后,编辑器会自动打开。左侧是“资源管理器”面板,这里展示了你项目的整个目录结构。理解这个结构至关重要:
HelloCocos(项目根目录) ├── assets(核心资源目录) │ ├── main(通常存放首个场景相关资源) │ │ ├── scene(场景文件,如 `main.fire`) │ │ └── scripts(脚本文件,如 `GameCtrl.ts`) │ ├── resources(动态加载资源目录) │ └── ...(你后续创建的其他资源文件夹) ├── settings(项目设置目录) │ ├── builder.json(构建流程配置) │ ├── packages(插件包配置) │ └── settings.json(编辑器偏好设置,**不建议手动修改**) ├── extensions(扩展插件目录) ├── temp(临时文件目录,可忽略) ├── library(本地资源库和导入数据,**切勿提交到版本控制**) ├── local(本地设置和日志,**切勿提交到版本控制**) ├── profiles(构建配置方案) ├── tsconfig.json(TypeScript 编译配置) ├── project.json(项目标识文件) └── ...(其他配置文件)关键目录说明:
assets:这是你的工作目录。所有场景、脚本、纹理、声音、预制体等游戏资源都应该放在这里或它的子文件夹下。只有放在这里的资源才会被编辑器识别和管理。你可以在此目录下自由创建文件夹来分类管理资源,例如assets/textures,assets/scripts,assets/prefabs。assets/resources:这是一个特殊的文件夹。只有放在这个文件夹内的资源,才能通过引擎的resources.load等 API 在游戏运行时进行动态加载。如果你需要从网络下载或根据条件加载资源,就需要把它们放在这里。library和local:这两个是由编辑器自动生成的本地缓存和设置目录。它们的内容依赖于本地开发环境(如图片压缩的中间文件、导入的模型数据等)。绝对不要将它们提交到 Git 等版本控制系统。通常我们会通过.gitignore文件来忽略它们。settings:存放项目级别的配置。builder.json里可以配置不同平台(如 Web、iOS、Android)的构建选项,比如包名、屏幕方向、图标等。project.json:项目的“身份证”,包含了项目名称、使用的引擎版本等基本信息。
3.3 认识编辑器核心界面
项目打开后,你会看到 Cocos Creator 的主界面。它由多个面板组成,可以通过“窗口”菜单打开或关闭。主要的面板包括:
- 场景编辑器(Scene):中央最大的区域。你在这里通过拖拽节点(Node)来搭建游戏场景。对于 2D 项目,你看到的是一个二维画布;对于 3D,则是一个三维视图。
- 层级管理器(Hierarchy):通常位于左上。以树状结构展示当前场景中的所有节点。节点是 Cocos Creator 中最基本的组织单位,一切(摄像机、精灵、灯光、甚至空物体)都是节点。
- 资源管理器(Assets):通常位于左下。展示你的
assets目录下的所有文件。你可以在这里创建、导入、删除和管理资源。 - 属性检查器(Inspector):通常位于右侧。当你选中场景中的一个节点,或资源管理器中的一个资源时,这里会显示该对象所有可编辑的属性。这是你配置节点和组件的核心区域。
- 控制台(Console):通常位于底部。输出日志、警告和错误信息。调试脚本时,你的
console.log信息就会显示在这里。
第一个操作:在“层级管理器”中,你会看到一个叫Canvas的节点和一个叫Main Camera的节点。Canvas是 2D UI 的根容器,Main Camera是渲染场景的摄像机。试着在“场景编辑器”中点击它们,观察“属性检查器”里内容的变化。
4. 创建并运行你的第一个场景
现在,让我们让这个空项目“动”起来,哪怕只是显示一行字。
4.1 创建与保存场景
- 在“资源管理器”中,右键点击
assets文件夹(或你希望存放场景的文件夹,比如assets/main),选择“创建 -> Scene”。 - 给新场景命名为
Main。你会看到一个Main.scene文件。 - 重要习惯:立即保存场景。快捷键是
Ctrl+S(Windows) 或Cmd+S(Mac)。编辑器不会自动保存场景,养成随手保存的习惯能避免心血白费。
4.2 添加一个文本标签(Hello World!)
- 确保
Main.scene在场景编辑器中打开(双击它)。 - 在“层级管理器”中,右键点击
Canvas节点,选择“创建 -> Node -> Label”。这会在Canvas下创建一个新的文本节点。 - 在“层级管理器”中选中这个新节点,在右侧的“属性检查器”中,找到
Label组件。 - 修改
String属性,将默认的“Label”改成“Hello, Cocos Creator!”。 - 你还可以调整
Font Size(字体大小)、Color(颜色)等属性,让它看起来更醒目。 - 使用场景编辑器顶部的移动工具(快捷键 W),在画布上拖动这个 Label 节点,把它放到屏幕中央。
4.3 创建并挂载第一个脚本
游戏不能只有静态文字,我们需要一点交互逻辑。
- 在“资源管理器”中,右键点击
assets(或assets/scripts),选择“创建 -> TypeScript”。命名为HelloScript。 - 双击这个
HelloScript.ts文件,它会在你的默认代码编辑器(如 VSCode)中打开。你会看到一些默认生成的代码。 - 我们修改它,让点击文本时,文本内容发生变化。将脚本内容替换为以下代码:
import { _decorator, Component, Node, Label, EventTouch } from 'cc'; const { ccclass, property } = _decorator; @ccclass('HelloScript') export class HelloScript extends Component { @property(Label) // 声明一个属性,类型是Label组件,用于在编辑器里关联节点 myLabel: Label | null = null; // 初始化为null start() { // 为当前节点添加触摸事件监听 this.node.on(Node.EventType.TOUCH_START, this.onTouchStart, this); } onTouchStart(event: EventTouch) { if (this.myLabel) { this.myLabel.string = "你点到我啦!"; } } onDestroy() { // 记得在组件销毁时移除监听,避免内存泄漏 this.node.off(Node.EventType.TOUCH_START, this.onTouchStart, this); } }- 保存脚本文件(
Ctrl+S)。 - 回到 Cocos Creator 编辑器。在“层级管理器”中,选中我们之前创建的 Label 节点。
- 在“属性检查器”的最下方,点击“添加组件 -> 用户脚本组件 -> HelloScript”。这样就把脚本挂载到了这个节点上。
- 挂载后,你会看到“属性检查器”中出现了
HelloScript组件。因为我们在代码里用@property(Label)声明了一个myLabel属性,所以这里会显示一个“My Label”的拖拽框。 - 我们需要将 Label 组件自身赋值给它。在“属性检查器”的上半部分,找到
Label组件,看到其旁边有一个小小的“齿轮”图标(或类似设置图标),点击它,选择“复制组件引用”。 - 然后点击
HelloScript组件里My Label属性右侧的“粘贴组件引用”按钮(一个回形针图标)。这样就将这个节点上的 Label 组件引用,赋值给了脚本里的myLabel变量。这是 Cocos Creator 中非常常见的编辑器-脚本数据绑定方式。
4.4 设置启动场景并预览游戏
- 在“资源管理器”中,找到你的
Main.scene。 - 右键点击它,选择“设置为启动场景”。这样每次运行游戏,都会默认加载这个场景。
- 点击编辑器正上方的三角形“预览”按钮(或者按
Ctrl+P)。Cocos Creator 会启动一个本地浏览器窗口来运行你的游戏。 - 在预览窗口中,用鼠标点击那行“Hello, Cocos Creator!”的文字,看看它是否变成了“你点到我啦!”。
恭喜!你已经完成了从创建项目到编写简单交互逻辑的完整流程。虽然功能简单,但你已经走通了 Cocos Creator 开发的核心链路:创建场景 -> 添加节点与组件 -> 编写脚本逻辑 -> 关联脚本与节点属性 -> 预览测试。
5. 常见问题与排查技巧实录
在实际操作中,你几乎一定会遇到下面这些问题。别担心,它们都是学习路上的“标配”。
5.1 项目创建失败或打开缓慢
- 问题:点击创建后卡住,或提示失败。
- 排查:
- 路径问题:首先检查项目路径和名称是否包含中文或特殊字符。这是最常见的原因。
- 权限问题:确保你对目标磁盘文件夹有写入权限。可以尝试在用户目录(如“文档”)下创建。
- 引擎损坏:在 Dashboard 中尝试重新安装或修复 Cocos Creator 编辑器。
- 杀毒软件/防火墙干扰:临时关闭它们再试。
- 磁盘空间不足:检查目标磁盘是否有足够空间。
5.2 脚本编译错误或找不到组件
- 问题:保存脚本后,编辑器控制台报红,提示“Cannot find module ‘cc'”或“Property ‘xxx’ does not exist on type ‘Node'”。
- 排查:
- TypeScript 环境:确保你的项目根目录下有
tsconfig.json文件(创建项目时自动生成)。如果丢失,可以从其他正常项目复制一个。 - VSCode 智能提示失效:在 VSCode 中,打开命令面板(
Ctrl+Shift+P),运行“TypeScript: Select TypeScript Version”,然后选择“Use Workspace Version”(使用工作区版本),这会让 VSCode 使用项目node_modules里的 TypeScript。 - 组件名拼写错误:检查脚本中的
@ccclass(‘HelloScript’)里的名字,是否和你在编辑器“添加组件”时看到的名字完全一致(包括大小写)。 - 属性声明错误:
@property(Label)中的Label必须是从cc模块正确导入的。确保文件顶部有import { Label } from ‘cc’;。
- TypeScript 环境:确保你的项目根目录下有
5.3 预览时看不到变化或点击无效
- 问题:修改了场景或脚本,但预览时还是老样子。
- 排查:
- 场景未保存:这是最最最常见的原因!养成
Ctrl+S的习惯。编辑器预览的是最后一次保存的场景状态。 - 脚本未编译:保存脚本文件(
Ctrl+S)后,观察编辑器底部状态栏,通常会有一个编译过程。等编译完成(进度条消失)后再预览。 - 预览浏览器缓存:有时浏览器会缓存旧内容。可以尝试:
- 关闭预览窗口,重新点击预览。
- 在预览窗口按
F12打开开发者工具,在“Network”(网络)选项卡中勾选“Disable cache”(禁用缓存),然后刷新页面。
- 事件监听目标错误:检查脚本中
this.node.on监听的是否是正确节点。我们的例子是监听挂载脚本的节点(即 Label 节点)。如果你监听的是其他节点(如 Canvas),点击 Label 就不会触发。 - 节点层级与遮挡:确认你的 Label 节点在
Canvas之下,并且没有被其他更大、透明的节点(如图片)遮挡。在“层级管理器”中,越靠下的节点渲染在越上面。
- 场景未保存:这是最最最常见的原因!养成
5.4 资源导入与管理混乱
- 问题:图片、声音等资源导入后显示为红色问号,或在脚本中引用不到。
- 排查:
- 导入位置:确保资源文件(
.png,.jpg,.mp3等)是直接复制到assets目录下的某个子文件夹中。编辑器会自动检测并导入,生成对应的.meta文件。不要手动在操作系统里创建assets外的文件夹再拖进去。 meta文件:每个资源文件旁边都有一个同名的.meta文件,它存储了该资源在引擎内的 UUID 和导入设置。务必将其与源文件一同提交到版本控制系统。丢失.meta文件会导致资源引用断裂。- 资源引用:在脚本中动态加载资源,必须把资源放在
assets/resources目录或它的子目录下,并使用resources.load路径。例如,如果图片在assets/resources/images/hero.png,加载路径就是images/hero。
- 导入位置:确保资源文件(
5.5 项目迁移或分享后出错
- 问题:把项目拷贝给同事或换一台电脑打开,报各种资源丢失错误。
- 解决方案:
- 提交正确的文件:确保将
assets,settings,project.json,tsconfig.json等目录和文件提交。务必忽略library,local,temp以及node_modules(如果有)目录。一个标准的.gitignore文件对于 Cocos Creator 项目至关重要。 - 重新导入:如果对方打开后资源显示红色,可以尝试在“资源管理器”中右键点击
assets根目录,选择“重新导入全部资源”。编辑器会重新扫描并生成.meta文件(如果源文件还在)。 - 引擎版本一致:尽量保证团队使用相同的主要版本(如都是 3.8.x)的 Cocos Creator。不同大版本之间可能存在不兼容的改动。
- 提交正确的文件:确保将
创建第一个项目的旅程到此告一段落。回顾一下,我们不仅学会了点击按钮,更深入理解了 2D/3D 的选择、项目模板的意义、目录结构背后的逻辑,以及从场景搭建到脚本交互的完整闭环。记住,在 Cocos Creator 中,一切皆节点,功能靠组件。当你遇到问题时,多利用控制台的报错信息,多查阅官方文档(虽然有些地方可能比较简略),并且善用社区搜索。这个小小的“Hello World”项目,就是你庞大游戏世界的第一个像素点。接下来,试着改变文本的颜色、位置,添加一张背景图,或者让文字动起来,每一步尝试都会让你对引擎的理解更深一分。