cocos-creator
Cocos Creator 3.8.x 与 COCOS 4 跨平台 2D/3D 游戏引擎开发助手。用于编写与调试 TypeScript 组件、节点与组件体系、事件系统、Tween/Animation 动画、物理与碰撞、UI(Label/Sprite/Button/Widget/Layout)、资源加载与 AssetBundle、场景管理、性能与 DrawCall 优化,以及发布到微信小游戏、抖音小游戏、H5、iOS、Android、HarmonyOS Next 等平台。当用户提到 Cocos、Cocos Creator、Creator 3.8、COCOS 4、cocos-cli、cc 模块、.scene/.prefab/.meta 文件、@ccclass/@property 装饰器、小游戏发布、Spine 动画或游戏引擎性能时使用。
ソース情報
- リポジトリ
- hsiaozzz/cocos-creator-skill
- ソースの最終更新活動
- 2026年9月11日 03:47
- 検出された SKILL.md の言語
- 中国語
- スター
- 11
- フォーク
- 2
インストール方法
デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。
ソースファイルを確認
インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。
ファイルエクスプローラー
10 ファイルSKILL.md を表示中
SKILL.md
ソースの指示 · 読み取り専用プレビュー- name
- cocos-creator
- description
- Cocos Creator 3.8.x 与 COCOS 4 跨平台 2D/3D 游戏引擎开发助手。用于编写与调试 TypeScript 组件、节点与组件体系、事件系统、Tween/Animation 动画、物理与碰撞、UI(Label/Sprite/Button/Widget/Layout)、资源加载与 AssetBundle、场景管理、性能与 DrawCall 优化,以及发布到微信小游戏、抖音小游戏、H5、iOS、Android、HarmonyOS Next 等平台。当用户提到 Cocos、Cocos Creator、Creator 3.8、COCOS 4、cocos-cli、cc 模块、.scene/.prefab/.meta 文件、@ccclass/@property 装饰器、小游戏发布、Spine 动画或游戏引擎性能时使用。
- license
- MIT
- compatibility
- 无需额外运行时依赖。scripts/ 下的体检脚本需要 Python 3.8+(可选)。命令行构建能力需要安装 Cocos Creator 编辑器或 cocos-cli。
- allowed-tools
- Read Write Edit Bash Glob Grep
- metadata
- {"author":"hsiaozzz","version":"2.0.0","repository":"https://github.com/hsiaozzz/cocos-creator-skill","engines":"Cocos Creator 3.8.x, COCOS 4","languages":"TypeScript, JavaScript"}
# Cocos Creator 开发技能
Cocos Creator 跨平台 2D/3D 游戏引擎开发助手。本文件是**入口与路由**:核心工作流和速查表在这里,深度内容按需从 `references/` 加载,避免一次性占满上下文。
## 何时使用
**适用:**
- 编写、重构、调试 Cocos Creator 的 TypeScript / JavaScript 组件脚本
- 解释 `cc` 模块 API、节点与组件体系、生命周期、事件、动画、物理、UI、资源与场景管理
- 排查构建与发布问题:微信小游戏、抖音小游戏、H5、iOS、Android、HarmonyOS Next
- 性能优化:DrawCall、合批、内存、对象池、包体与首屏加载
- 3.x → COCOS 4 的 API 迁移与版本兼容判断
**不适用:**
- Unity / Unreal / Godot / Cocos2d-x C++ 的问题(API 不通用,不要套用本技能的写法)
- 纯美术与策划数值设计(可作为上下文,但不是本技能职责)
## 第 0 步:先确认版本,再写代码
**这一步不能跳过。** 3.x 与 2.x API 不兼容;3.8 与 COCOS 4 之间也存在差异。
先确认项目实际版本,不要凭记忆假设:
```bash
# 读取项目记录的目标版本
cat project.json 2>/dev/null | head -20 # 老项目在根目录
find . -maxdepth 2 -name "package.json" -not -path "*/node_modules/*" -exec grep -l '"cc"' {} \;
```
- 拿到版本 → 按对应 API 写代码,并在回复中注明"基于 Cocos Creator X.Y.Z"。
- 拿不到版本 → **先问用户**,或明确声明"以下代码基于 3.8.x,若你的项目是 2.x 需改写 API"。
| 版本 | 状态 | 备注 |
|---|---|---|
| 2.x | 停止演进 | 保留 `cc.Class`、`cc.Node` 老 API,与 3.x 不兼容 |
| 3.8.x | 长期主力稳定版 | 3.8.9 为 2026 年最新补丁;3.8.5+ 支持 HarmonyOS Next |
| COCOS 4 | 2026 年 1 月 MIT 全开源 | 3.x 的演进版,承诺前向兼容;编辑器能力逐步迁往 Headless CLI |
## 第 1 步:定位代码该写在哪
先读项目现有结构再动手,不要按模板凭空新建目录。Cocos 项目典型约定:
```
assets/
├── scenes/ # .scene 场景
├── scripts/
│ ├── components/ # 挂载到节点的组件
│ ├── managers/ # 全局管理器(单例)
│ └── utils/ # 纯函数工具
├── prefabs/ # .prefab 预制体
├── textures/ audio/ animations/ materials/
└── resources/ # 只有此目录下资源可被 resources.load() 动态加载
```
三个硬约束:
1. **每个资源都有同名 `.meta` 文件。** 新增资源必须让编辑器生成 `.meta`,手写或漏掉会导致引用丢失、构建报错。
2. **只有 `assets/resources/` 下的资源能用 `resources.load()` 按路径加载。** 其他目录的资源必须通过 `@property` 在编辑器里挂引用。
3. **脚本与组件类的映射由 `.meta` 中的 UUID 决定。** 不要重命名或移动已被场景引用的脚本文件,会断链。
## 第 2 步:写代码
组件骨架(3.8.x):
```typescript
import { _decorator, Component, Node, Vec3 } from 'cc';
const { ccclass, property } = _decorator;
@ccclass('PlayerController')
export class PlayerController extends Component {
@property(Node)
target: Node | null = null;
@property({ tooltip: '移动速度(像素/秒)' })
speed = 120;
private _dir = new Vec3();
onLoad() {
// 只做自身初始化;跨节点引用在这里可能还没就绪
}
start() {
// 场景内所有节点 onLoad 完成后调用,适合跨节点交互
}
update(dt: number) {
if (this.speed === 0) return;
const pos = this.node.position;
this.node.setPosition(
pos.x + this._dir.x * this.speed * dt,
pos.y + this._dir.y * this.speed * dt,
pos.z + this._dir.z * this.speed * dt,
);
}
onDestroy() {
// 在这里反注册所有全局监听,否则场景切换后回调仍会触发
}
}
```
生命周期顺序与适用场景:
| 回调 | 时机 | 适合做什么 |
|---|---|---|
| `onLoad` | 节点激活且组件启用时,仅一次 | 自身字段初始化、缓存 `getComponent` 结果 |
| `start` | 第一次 `update` 前,仅一次 | 依赖其他节点的初始化 |
| `update(dt)` | 每帧 | 逐帧逻辑,`dt` 单位为秒 |
| `lateUpdate(dt)` | 所有 `update` 之后 | 相机跟随(避免抖动) |
| `onEnable` / `onDisable` | 组件启用 / 禁用 | 事件注册与反注册 |
| `onDestroy` | 销毁前 | 释放资源、反注册全局事件 |
完整 API 清单见 [references/api-quick-ref.md](references/api-quick-ref.md),可直接复用的示例见 [references/examples.md](references/examples.md)。
## 第 3 步:必须验证
写完代码不能直接交付。按项目情况选择最低成本的有效验证:
```bash
# 1) 类型检查(最快,无需打开编辑器)
npx tsc --noEmit -p tsconfig.json
# 2) 项目体检(本技能自带:检查 .meta 缺失、脚本断链、resources 误放、大文件)
python skills/cocos-creator/scripts/cocos_doctor.py --project .
# 3) 编辑器 / CLI 构建
# 编辑器:预览运行(浏览器或模拟器)
# COCOS 4:cocos-cli(支持 Headless 构建)
```
验证没跑通就如实说明,不要用"应该没问题"交付。
## 第 4 步:提交前自查常见陷阱
1. **`Node.position` 是引用语义**:`this.node.position` 返回的是引擎内部复用的对象,不要长期持有,也不要拿它当计算用的临时变量。需要向量运算时用 `Vec3` 的静态方法配一个自己的临时对象。
2. **`resources.load` 路径不带扩展名**:`resources.load('prefabs/enemy', Prefab, cb)`。写成 `prefabs/enemy.prefab` 会失败。
3. **事件必须成对反注册**:`this.node.on(...)` 配 `off`,`input.on(...)` 配 `off`,且传同一个 `this` 作为 target,否则拿不到同一个回调引用。
4. **`instantiate` 出来的节点必须 `addChild`**,否则不参与场景树,组件不会执行。
5. **频繁 `instantiate` / `destroy` 会引发 GC 抖动**,用对象池(`NodePool` 或自建池)。
6. **图集与材质是合批的前提**:同图集同材质的 Sprite 才能合批,UI 层级穿插会打断合批。
7. **异步竞态**:连续两次 `director.loadScene`,或在加载回调里操作已被销毁的节点,需要 `isValid(node)` 防护。
更多「症状 → 原因 → 方案」见 [references/troubleshooting.md](references/troubleshooting.md)。
## 渐进式参考索引
按需加载,不要一次性预读全部:
| 文件 | 内容 | 何时加载 |
|---|---|---|
| [references/api-quick-ref.md](references/api-quick-ref.md) | 常用模块导入,节点 / 事件 / 动画 / 物理 / UI / 资源 / 场景 API 速查 | 需要查具体 API 签名 |
| [references/examples.md](references/examples.md) | 玩家控制器、对象池、UI 列表、状态机等完整示例 | 需要可直接复用的完整实现 |
| [references/best-practices.md](references/best-practices.md) | 项目架构、目录约定、单例与事件总线、代码规范、资源管理策略 | 设计架构或做 Code Review |
| [references/performance.md](references/performance.md) | DrawCall、合批、内存、GC、包体、首屏加载的量化优化路径 | 出现卡顿、掉帧或包体超限 |
| [references/publishing.md](references/publishing.md) | 微信 / 抖音小游戏分包,H5、iOS、Android、HarmonyOS Next 发布清单 | 构建报错或准备上线 |
| [references/troubleshooting.md](references/troubleshooting.md) | 编辑器、脚本编译、资源、物理、UI、构建发布的排查手册 | 遇到具体报错 |
| [references/cocos4-migration.md](references/cocos4-migration.md) | 3.8 → COCOS 4 迁移、cocos-cli / Headless、AI-Native 能力变化 | 评估升级或使用 COCOS 4 |
## 速查:最常用的导入与片段
```typescript
import { _decorator, Component, Node, Vec3, Vec2, Prefab, instantiate, Label, Sprite,
Button, Widget, director, resources, tween, input, Input, EventKeyboard,
RigidBody, Collider, ICollisionEvent, Color, isValid, assetManager } from 'cc';
```
```typescript
// 节点与组件
const child = this.node.getChildByName('Child');
const label = this.node.getComponent(Label);
const btn = this.node.getComponentInChildren(Button);
// 实例化预制体
resources.load('prefabs/enemy', Prefab, (err, prefab) => {
if (err || !isValid(this.node)) return;
const node = instantiate(prefab);
this.node.addChild(node);
});
// 事件(target 一致才能 off 掉)
this.node.on(Node.EventType.TOUCH_END, this.onTap, this);
this.node.off(Node.EventType.TOUCH_END, this.onTap, this);
// Tween
tween(this.node)
.to(0.3, { position: new Vec3(100, 0, 0) }, { easing: 'quadOut' })
.delay(0.2)
.call(() => console.log('done'))
.start();
// 场景切换
director.loadScene('Game', (err) => { if (err) console.error(err); });
// 物理碰撞
this.getComponent(Collider)?.on('onCollisionEnter', (e: ICollisionEvent) => { /* ... */ });
```
## 反合理化:常见"偷懒借口"与反驳
- "先不确认版本,3.8 语法应该通用。" → 2.x 与 3.x 不兼容,写错版本等于交付废代码。先确认。
- "不用跑校验,代码看着对。" → 类型错误和 `.meta` 缺失只有工具能发现,肉眼看不出来。
- "`.meta` 文件不重要,先不提交。" → 缺少 `.meta` 会导致构建时资源引用全部丢失,必须提交。
- "资源放哪都能 `resources.load`。" → 只有 `assets/resources/` 可以,其他目录必须走 `@property` 挂引用。
- "事件不 `off` 也没事。" → 场景切换后回调仍持有已销毁节点,是崩溃与内存泄漏的高频来源。
- "性能问题最后再优化。" → DrawCall 与图集策略是结构性决策,越晚改成本越高。
## 危险信号(Red Flags)
出现任一情况,先停下来确认,不要继续往下写:
- 代码里出现 `cc.Class` / `cc.Node` 老式 API,但文件按 3.x 结构组织(版本混乱)
- 引用了 `assets/resources/` 之外的路径却用了 `resources.load`
- 新增了资源文件却看不到对应 `.meta`
- 修改了脚本文件名 / 路径,而该脚本已被 `.scene` 或 `.prefab` 引用
- `destroy()` 之后又访问该节点的属性
- 声称"已优化"但没有给出 DrawCall / 帧时间 / 内存的前后对比数据
## 验证清单(退出标准)
交付前逐项确认,拿证据说话:
- [ ] 已确认项目对应的 Creator 版本,并在回复中注明
- [ ] `npx tsc --noEmit` 通过(或明确说明为何无法运行)
- [ ] 新增资源均有 `.meta` 文件
- [ ] 所有 `on` / `off` 成对,且 `target` 一致
- [ ] 异步回调中对已销毁节点做了 `isValid` 防护
- [ ] 涉及性能改动时,给出优化前后的量化对比
- [ ] 涉及构建发布时,说明了目标平台与验证方式
## 官方资源
- 文档(3.8):https://docs.cocos.com/creator/3.8/manual/zh/
- API(3.8):https://docs.cocos.com/creator/3.8/api/zh/
- COCOS 4 开源仓库:https://github.com/cocos/cocos4
- COCOS CLI(Headless 构建):https://github.com/cocos/cocos-cli
- 示例项目:https://github.com/cocos/cocos-test-projects
- 中文社区:https://forum.cocos.org/
- Cocos Store:https://store.cocos.com
> 本技能由社区维护。与官方文档不一致之处,**以官方文档为准**,并欢迎提 Issue 修正。
GitHubで見る