cocos-creator-dev
- Repo stars 29
- Author repo cocos-creator-dev-skill
Cocos Creator 3.x Development Guide
Guide for Cocos Creator 3.x game development using TypeScript.
Quick Start
Basic Component Template
import { _decorator, Component, Node } from 'cc';
const { ccclass, property } = _decorator;
@ccclass('MyComponent')
export class MyComponent extends Component {
@property(Node)
targetNode: Node = null;
@property
speed: number = 10;
onLoad() {
// Initialization
}
start() {
// First frame update
}
update(deltaTime: number) {
// Per-frame update
}
}
Common Operations
Add component dynamically:
this.node.addComponent(MyComponent);
Get component:
const comp = this.node.getComponent(MyComponent);
Load scene:
director.loadScene('SceneName');
Load resource:
resources.load('textures/sprite', SpriteFrame, (err, asset) => {
this.node.getComponent(Sprite).spriteFrame = asset;
});
Reference Documentation
For detailed information on specific topics, consult these reference files:
- Script Basics: references/script-basics.md - TypeScript setup, decorators, class definitions, property declarations
- Component System: references/component-system.md - Lifecycle methods, component management, execution order
- Node & Hierarchy: references/node-hierarchy.md - Node creation, traversal, transformations, coordinate systems
- Scene Management: references/scene-management.md - Scene loading, persist nodes, preloading
- Resource Management: references/resource-management.md - Asset loading, releasing, Asset Bundles, memory management
- Event System: references/event-system.md - Input handling, custom events, node events
Development Guidelines
Version Check
Always confirm the user is working with Cocos Creator 3.x, not 2.x. APIs and workflows differ significantly.
Code Style
- Use TypeScript exclusively (JavaScript not supported in 3.x)
- Follow decorator pattern:
@ccclass,@property - Use type annotations for all properties
- Prefer
this.nodefor current node access
Performance Best Practices
- Release unused resources with
assetManager.releaseAsset() - Use object pooling for frequently created/destroyed nodes
- Cache component references instead of repeated
getComponent()calls - Use
scheduleOnceinstead of timers for one-time delays
Common Pitfalls
- Lifecycle order:
onLoad→start→update. Don't access other components inonLoadif they might not be ready. - Resource leaks: Always release dynamically loaded assets
- Node activation: Check
node.activebefore accessing components - Scene switching: Use persist nodes for data that needs to survive scene changes
Key APIs Reference
Node Operations
this.node- Current nodethis.node.parent- Parent nodethis.node.children- Child nodes arraythis.node.addChild(child)- Add child nodethis.node.removeFromParent()- Remove from parentthis.node.destroy()- Destroy nodethis.node.setPosition(x, y, z)- Set positionthis.node.setRotation(x, y, z)- Set rotationthis.node.setScale(x, y, z)- Set scale
Component Operations
this.node.addComponent(T)- Add componentthis.node.getComponent(T)- Get componentthis.getComponentInChildren(T)- Get component in childrenthis.getComponentsInChildren(T)- Get all components in children
Scene Operations
director.loadScene(name)- Load scenedirector.preloadScene(name)- Preload scenedirector.getScene()- Get current scenegame.addPersistRoot(node)- Add persist nodegame.removePersistRoot(node)- Remove persist node
Resource Operations
resources.load(path, type, callback)- Load resourceassetManager.loadRemote(url, type, callback)- Load remote resourceassetManager.releaseAsset(asset)- Release resourceresources.loadDir(path, type, callback)- Load directory
Event Operations
this.node.on(type, callback, target)- Register eventthis.node.off(type, callback, target)- Unregister eventthis.node.emit(type, detail)- Emit eventinput.on(type, callback, target)- Register input event
External Resources
- Official Manual: https://docs.cocos.com/creator/3.8/manual/zh/
- API Reference: https://docs.cocos.com/creator/3.8/api/zh/
- Example Projects: https://github.com/cocos/cocos-example-projects
Troubleshooting
Component Not Found
- Verify component is attached in editor
- Check node is active:
if (this.node.active) - Use
getComponentInChildren()for nested components
Scene Not Loading
- Check scene name in Build Settings
- Verify scene is added to build
- Use
preloadScene()for large scenes
Memory Leaks
- Release assets after use
- Destroy unused nodes
- Remove event listeners in
onDestroy - Use Asset Bundles for modular loading
Performance Issues
- Profile with Chrome DevTools
- Reduce draw calls with batching
- Use object pooling
- Optimize sprite atlases
- Check script execution time in updates
When to Read References
Read specific reference files when:
- script-basics.md: Creating new components, defining properties, configuring TypeScript
- component-system.md: Implementing lifecycle callbacks, managing component dependencies
- node-hierarchy.md: Creating/destroying nodes, building scene hierarchy, coordinate transformations
- scene-management.md: Loading scenes, passing data between scenes, managing game flow
- resource-management.md: Loading assets, managing memory, using Asset Bundles
- event-system.md: Handling user input, implementing custom events, component communication
Decision Guide
Multiple valid approaches? Use high freedom - provide options and let context guide choice.
Standard pattern exists? Use medium freedom - provide template code with parameters.
Error-prone operation? Use low freedom - provide specific, validated code pattern.
- Fluxly category
- Writing
- Author-declared agents
- No explicit declaration found; this is not inferred or tested compatibility
- Static check
- 88 / 100 · heuristic scan, not runtime safety proof
- Author / version / license
- @Dailiduzhou · no license declared
- Fluxly token estimate
- Lean
- Fluxly setup estimate
- Guided setup
- External API key
- No requirement detected
- Detected OS requirements
- macOS · Linux · Windows
- Runtime requirements
- Node.js
- Detected file/system behavior
-
- Read-only
- Write / modify
- Shell exec
- Detected network behavior
- Local-only
- Install commands
- None (reference only)
Profile is derived at build time from SKILL.md and install vectors. Subject to drift from author intent.
Heads up: 未限定 allowed-tools,默认拥有全部工具权限。
The current SKILL.md does not define a fixed output example. Quick Start
Basic Component Template
Add component dynamically: Get component: Load scene:
For detailed information on specific topics, consult these reference files: Script Basics: references/script-basics.md - TypeScript setup, decorators, class definitions, property declarations Component System: references/component-system.md - Lifecycle…
Development Guidelines
Always confirm the user is working with Cocos Creator 3.x, not 2.x. APIs and workflows differ significantly.
# Cocos Creator 3.x Development Guide
Guide for Cocos Creator 3.x game development using TypeScript.
## Quick Start
### Basic Component Template
```typescript
import { _decorator, Component, Node } from 'cc';
const { ccclass, property } = _decorator;
@ccclass('MyComponent')
export class MyComponent extends Component {
@property(Node)
targetNode: Node = null;
@property
speed: number = 10;
onLoad() {
// Initialization
}
start() {
// First frame update
}
update(deltaTime: number) {
// Per-frame update
}
}
```
### Common Operations
**Add component dynamically:**
```typescript
this.node.addComponent(MyComponent);
```
**Get component:**
```typescript
const comp = this.node.getComponent(MyComponent);
```
**Load scene:**
```typescript
director.loadScene('SceneName');
```
**Load resource:**
```typescript
resources.load('textures/sprite', SpriteFrame, (err, asset) => {
this.node.getComponent(Sprite).spriteFrame = asset;
});
```
## Reference Documentation
For detailed information on specific topics, consult these reference files:
- **Script Basics**: [references/script-basics.md](references/script-basics.md) - TypeScript setup, decorators, class definitions, property declarations
- **Component System**: [references/component-system.md](references/component-system.md) - Lifecycle methods, component management, execution order
- **Node & Hierarchy**: [references/node-hierarchy.md](references/node-hierarchy.md) - Node creation, traversal, transformations, coordinate systems
- **Scene Management**: [references/scene-management.md](references/scene-management.md) - Scene loading, persist nodes, preloading
… Author text anchors workflow facts; Fluxly only indexes current sections, terms, files, and commands.
sections -> Quick Start → Basic Component Template → Common Operations → Reference Documentation → Development Guidelines → Version Check
terms -> Add component dynamically · Get component · Load scene · Load resource · Script Basics · Component System · Node & Hierarchy · Scene Management
files/cmd -> @ccclass · @property · this.node · assetManager.releaseAsset() · getComponent() · scheduleOnce · onLoad · start
body sha256 -> c137499317a3
Decide Fit First
Design Intent
How To Use It
Boundaries And Review