docs(blueprint): add editor user guide with download link
- Add Chinese and English editor guide for Cocos Creator blueprint plugin - Add download link to GitHub Release in blueprint index pages - Add editor guide to sidebar navigation - Clarify blueprint files must be saved in resources directory
This commit is contained in:
@@ -232,6 +232,7 @@ export default defineConfig({
|
||||
translations: { en: 'Blueprint' },
|
||||
items: [
|
||||
{ label: '概述', slug: 'modules/blueprint', translations: { en: 'Overview' } },
|
||||
{ label: '编辑器使用指南', slug: 'modules/blueprint/editor-guide', translations: { en: 'Editor Guide' } },
|
||||
{ label: '虚拟机 API', slug: 'modules/blueprint/vm', translations: { en: 'VM API' } },
|
||||
{ label: '自定义节点', slug: 'modules/blueprint/custom-nodes', translations: { en: 'Custom Nodes' } },
|
||||
{ label: '内置节点', slug: 'modules/blueprint/nodes', translations: { en: 'Built-in Nodes' } },
|
||||
|
||||
388
docs/src/content/docs/en/modules/blueprint/editor-guide.md
Normal file
388
docs/src/content/docs/en/modules/blueprint/editor-guide.md
Normal file
@@ -0,0 +1,388 @@
|
||||
---
|
||||
title: "Blueprint Editor User Guide"
|
||||
description: "Complete guide for using the Cocos Creator Blueprint Visual Scripting Editor"
|
||||
---
|
||||
|
||||
This guide covers how to use the Blueprint Visual Scripting Editor in Cocos Creator.
|
||||
|
||||
## Download & Installation
|
||||
|
||||
### Download
|
||||
|
||||
Download the latest version from GitHub Release:
|
||||
|
||||
**[Download Cocos Node Editor v1.0.0](https://github.com/esengine/esengine/releases/tag/cocos-node-editor-v1.0.0)**
|
||||
|
||||
### Installation Steps
|
||||
|
||||
1. Extract `cocos-node-editor.zip` to your project's `extensions` directory:
|
||||
|
||||
```
|
||||
your-project/
|
||||
├── assets/
|
||||
├── extensions/
|
||||
│ └── cocos-node-editor/ ← Extract here
|
||||
└── ...
|
||||
```
|
||||
|
||||
2. Restart Cocos Creator
|
||||
|
||||
3. Confirm the plugin is enabled via **Extensions → Extension Manager**
|
||||
|
||||
4. Open the editor via **Panel → Node Editor**
|
||||
|
||||
## Interface Overview
|
||||
|
||||
- **Toolbar** - Located at the top, contains New, Open, Save, Undo, Redo operations
|
||||
- **Node Panel** - Located on the left, lists all available nodes by category (Event, Entity, Component, Flow Control, etc.)
|
||||
- **Canvas Area** - Main central area for placing and connecting nodes
|
||||
- **Variables Panel** - Located at the bottom, for defining and managing blueprint variables
|
||||
|
||||
## Canvas Operations
|
||||
|
||||
| Operation | Method |
|
||||
|-----------|--------|
|
||||
| Pan canvas | Middle-click drag / Alt + Left-click drag |
|
||||
| Zoom canvas | Mouse wheel |
|
||||
| Open node menu | Right-click on empty space |
|
||||
| Box select nodes | Drag on empty canvas |
|
||||
| Additive select | Ctrl + Drag |
|
||||
| Delete selected | Delete key |
|
||||
|
||||
## Node Operations
|
||||
|
||||
### Adding Nodes
|
||||
|
||||
1. **Drag from Node Panel** - Drag nodes from the left panel onto the canvas
|
||||
2. **Right-click Menu** - Right-click on empty canvas space to select nodes
|
||||
|
||||
### Connecting Nodes
|
||||
|
||||
1. Drag from an output pin to an input pin
|
||||
2. Compatible pins will highlight
|
||||
3. Release to complete the connection
|
||||
|
||||
**Pin Type Reference:**
|
||||
|
||||
| Pin Color | Type | Description |
|
||||
|-----------|------|-------------|
|
||||
| White ▶ | Exec | Execution flow (controls order) |
|
||||
| Cyan ◆ | Entity | Entity reference |
|
||||
| Purple ◆ | Component | Component reference |
|
||||
| Light Blue ◆ | String | String value |
|
||||
| Green ◆ | Number | Numeric value |
|
||||
| Red ◆ | Boolean | Boolean value |
|
||||
| Gray ◆ | Any | Any type |
|
||||
|
||||
### Deleting Connections
|
||||
|
||||
Click a connection line to select it, then press Delete.
|
||||
|
||||
## Node Types Reference
|
||||
|
||||
### Event Nodes
|
||||
|
||||
Event nodes are entry points for blueprint execution, triggered when specific events occur.
|
||||
|
||||
| Node | Trigger | Outputs |
|
||||
|------|---------|---------|
|
||||
| **Event BeginPlay** | When blueprint starts | Exec, Self (Entity) |
|
||||
| **Event Tick** | Every frame | Exec, Delta Time |
|
||||
| **Event EndPlay** | When blueprint stops | Exec |
|
||||
|
||||
**Example: Print message on game start**
|
||||
```
|
||||
[Event BeginPlay] ──Exec──→ [Print]
|
||||
└─ Message: "Game Started!"
|
||||
```
|
||||
|
||||
### Entity Nodes
|
||||
|
||||
Nodes for operating on ECS entities.
|
||||
|
||||
| Node | Function | Inputs | Outputs |
|
||||
|------|----------|--------|---------|
|
||||
| **Get Self** | Get current entity | - | Entity |
|
||||
| **Create Entity** | Create new entity | Exec, Name | Exec, Entity |
|
||||
| **Destroy Entity** | Destroy entity | Exec, Entity | Exec |
|
||||
| **Find Entity By Name** | Find by name | Name | Entity |
|
||||
| **Find Entities By Tag** | Find by tag | Tag | Entity[] |
|
||||
| **Is Valid** | Check entity validity | Entity | Boolean |
|
||||
| **Get/Set Entity Name** | Get/Set name | Entity | String |
|
||||
| **Set Active** | Set active state | Exec, Entity, Active | Exec |
|
||||
|
||||
**Example: Create new entity**
|
||||
```
|
||||
[Event BeginPlay] ──→ [Create Entity] ──→ [Add Component]
|
||||
└─ Name: "Bullet" └─ Type: Transform
|
||||
```
|
||||
|
||||
### Component Nodes
|
||||
|
||||
Access and manipulate ECS components.
|
||||
|
||||
| Node | Function |
|
||||
|------|----------|
|
||||
| **Has Component** | Check if entity has component |
|
||||
| **Get Component** | Get component instance |
|
||||
| **Add Component** | Add component to entity |
|
||||
| **Remove Component** | Remove component |
|
||||
| **Get/Set Property** | Get/Set component property |
|
||||
|
||||
**Example: Modify Transform component**
|
||||
```
|
||||
[Get Self] ─Entity─→ [Get Component: Transform] ─Component─→ [Set Property]
|
||||
├─ Property: x
|
||||
└─ Value: 100
|
||||
```
|
||||
|
||||
### Flow Control Nodes
|
||||
|
||||
Nodes that control execution flow.
|
||||
|
||||
#### Branch
|
||||
|
||||
Conditional branching, similar to if/else.
|
||||
|
||||
```
|
||||
┌─ True ──→ [DoSomething]
|
||||
[Branch]─┤
|
||||
└─ False ─→ [DoOtherThing]
|
||||
```
|
||||
|
||||
#### Sequence
|
||||
|
||||
Execute multiple branches in order.
|
||||
|
||||
```
|
||||
┌─ Then 0 ──→ [Step1]
|
||||
[Sequence]─┼─ Then 1 ──→ [Step2]
|
||||
└─ Then 2 ──→ [Step3]
|
||||
```
|
||||
|
||||
#### For Loop
|
||||
|
||||
Execute a specified number of times.
|
||||
|
||||
```
|
||||
[For Loop] ─Loop Body─→ [Execute each iteration]
|
||||
│
|
||||
└─ Completed ────→ [Execute after loop ends]
|
||||
```
|
||||
|
||||
| Input | Description |
|
||||
|-------|-------------|
|
||||
| First Index | Starting index |
|
||||
| Last Index | Ending index |
|
||||
|
||||
| Output | Description |
|
||||
|--------|-------------|
|
||||
| Loop Body | Execute each iteration |
|
||||
| Index | Current index |
|
||||
| Completed | Execute after loop ends |
|
||||
|
||||
#### For Each
|
||||
|
||||
Iterate over array elements.
|
||||
|
||||
#### While Loop
|
||||
|
||||
Loop while condition is true.
|
||||
|
||||
#### Do Once
|
||||
|
||||
Execute only once, skip afterwards.
|
||||
|
||||
#### Flip Flop
|
||||
|
||||
Alternate between A and B outputs each execution.
|
||||
|
||||
#### Gate
|
||||
|
||||
Control whether execution passes through via Open/Close/Toggle.
|
||||
|
||||
### Time Nodes
|
||||
|
||||
| Node | Function | Output Type |
|
||||
|------|----------|-------------|
|
||||
| **Delay** | Delay execution by specified time | Exec |
|
||||
| **Get Delta Time** | Get frame delta time | Number |
|
||||
| **Get Time** | Get total runtime | Number |
|
||||
|
||||
**Example: Execute after 2 second delay**
|
||||
```
|
||||
[Event BeginPlay] ──→ [Delay] ──→ [Print]
|
||||
└─ Duration: 2.0 └─ "Executed after 2s"
|
||||
```
|
||||
|
||||
### Math Nodes
|
||||
|
||||
| Node | Function |
|
||||
|------|----------|
|
||||
| **Add / Subtract / Multiply / Divide** | Arithmetic operations |
|
||||
| **Abs** | Absolute value |
|
||||
| **Clamp** | Clamp to range |
|
||||
| **Lerp** | Linear interpolation |
|
||||
| **Min / Max** | Minimum/Maximum value |
|
||||
| **Random Range** | Random number |
|
||||
| **Sin / Cos / Tan** | Trigonometric functions |
|
||||
|
||||
### Debug Nodes
|
||||
|
||||
| Node | Function |
|
||||
|------|----------|
|
||||
| **Print** | Output to console |
|
||||
|
||||
## Variable System
|
||||
|
||||
Variables store and share data within a blueprint.
|
||||
|
||||
### Creating Variables
|
||||
|
||||
1. Click the **+** button in the Variables panel
|
||||
2. Enter variable name
|
||||
3. Select variable type
|
||||
4. Set default value (optional)
|
||||
|
||||
### Using Variables
|
||||
|
||||
- **Drag to canvas** - Creates Get or Set node
|
||||
- **Get Node** - Read variable value
|
||||
- **Set Node** - Write variable value
|
||||
|
||||
### Variable Types
|
||||
|
||||
| Type | Description | Default |
|
||||
|------|-------------|---------|
|
||||
| Boolean | Boolean value | false |
|
||||
| Number | Numeric value | 0 |
|
||||
| String | String value | "" |
|
||||
| Entity | Entity reference | null |
|
||||
| Vector2 | 2D vector | (0, 0) |
|
||||
| Vector3 | 3D vector | (0, 0, 0) |
|
||||
|
||||
### Variable Node Error State
|
||||
|
||||
If you delete a variable but nodes still reference it:
|
||||
- Nodes display a **red border** and **warning icon**
|
||||
- You need to recreate the variable or delete these nodes
|
||||
|
||||
## Keyboard Shortcuts
|
||||
|
||||
| Shortcut | Function |
|
||||
|----------|----------|
|
||||
| `Ctrl + S` | Save blueprint |
|
||||
| `Ctrl + Z` | Undo |
|
||||
| `Ctrl + Shift + Z` | Redo |
|
||||
| `Ctrl + C` | Copy selected nodes |
|
||||
| `Ctrl + X` | Cut selected nodes |
|
||||
| `Ctrl + V` | Paste nodes |
|
||||
| `Delete` | Delete selected items |
|
||||
| `Ctrl + A` | Select all |
|
||||
|
||||
## Save & Load
|
||||
|
||||
### Saving Blueprints
|
||||
|
||||
1. Click the **Save** button in the toolbar
|
||||
2. Choose save location (**must be saved in `assets/resources` directory**, otherwise Cocos Creator cannot load dynamically)
|
||||
3. File extension is `.blueprint.json`
|
||||
|
||||
> **Important**: Blueprint files must be placed in the `resources` directory for runtime loading via `cc.resources.load()`.
|
||||
|
||||
### Loading Blueprints
|
||||
|
||||
1. Click the **Open** button in the toolbar
|
||||
2. Select a `.blueprint.json` file
|
||||
|
||||
### Blueprint File Format
|
||||
|
||||
Blueprints are saved as JSON, compatible with `@esengine/blueprint` runtime:
|
||||
|
||||
```json
|
||||
{
|
||||
"version": 1,
|
||||
"type": "blueprint",
|
||||
"metadata": {
|
||||
"name": "PlayerController",
|
||||
"description": "Player control logic"
|
||||
},
|
||||
"variables": [],
|
||||
"nodes": [],
|
||||
"connections": []
|
||||
}
|
||||
```
|
||||
|
||||
## Practical Examples
|
||||
|
||||
### Example 1: Movement Control
|
||||
|
||||
Move entity every frame:
|
||||
|
||||
```
|
||||
[Event Tick] ─Exec─→ [Get Self] ─Entity─→ [Get Component: Transform]
|
||||
│
|
||||
[Get Delta Time] ▼
|
||||
│ [Set Property: x]
|
||||
│ │
|
||||
[Multiply] ◄──────────────┘
|
||||
│
|
||||
└─ Speed: 100
|
||||
```
|
||||
|
||||
### Example 2: Health System
|
||||
|
||||
Check death after taking damage:
|
||||
|
||||
```
|
||||
[On Damage Event] ─→ [Get Component: Health] ─→ [Get Property: current]
|
||||
│
|
||||
▼
|
||||
[Subtract]
|
||||
│
|
||||
▼
|
||||
[Set Property: current]
|
||||
│
|
||||
▼
|
||||
┌─ True ─→ [Destroy Self]
|
||||
[Branch]─┤
|
||||
└─ False ─→ (continue)
|
||||
▲
|
||||
│
|
||||
[Less Or Equal]
|
||||
│
|
||||
current <= 0
|
||||
```
|
||||
|
||||
### Example 3: Delayed Spawning
|
||||
|
||||
Spawn an enemy every 2 seconds:
|
||||
|
||||
```
|
||||
[Event BeginPlay] ─→ [Do N Times] ─Loop─→ [Delay: 2.0] ─→ [Create Entity: Enemy]
|
||||
│
|
||||
└─ N: 10
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Q: Nodes won't connect?
|
||||
|
||||
Check if pin types are compatible. Execution pins (white) can only connect to execution pins. Data pins need matching types.
|
||||
|
||||
### Q: Blueprint not executing?
|
||||
|
||||
1. Ensure entity has `BlueprintComponent` attached
|
||||
2. Ensure scene has `BlueprintSystem` added
|
||||
3. Check if `autoStart` is `true`
|
||||
|
||||
### Q: How to debug?
|
||||
|
||||
Use **Print** nodes to output variable values to the console.
|
||||
|
||||
## Next Steps
|
||||
|
||||
- [ECS Node Reference](./nodes) - Complete node list
|
||||
- [Custom Nodes](./custom-nodes) - Create custom nodes
|
||||
- [Runtime Integration](./vm) - Blueprint VM API
|
||||
- [Examples](./examples) - More game logic examples
|
||||
@@ -5,7 +5,15 @@ description: "Visual scripting system deeply integrated with ECS framework"
|
||||
|
||||
`@esengine/blueprint` provides a visual scripting system deeply integrated with the ECS framework, supporting node-based programming to control entity behavior.
|
||||
|
||||
## Installation
|
||||
## Editor Download
|
||||
|
||||
Blueprint Editor Plugin for Cocos Creator:
|
||||
|
||||
**[Download Cocos Node Editor v1.0.0](https://github.com/esengine/esengine/releases/tag/cocos-node-editor-v1.0.0)**
|
||||
|
||||
For detailed usage instructions, see [Editor User Guide](./editor-guide).
|
||||
|
||||
## Runtime Installation
|
||||
|
||||
```bash
|
||||
npm install @esengine/blueprint
|
||||
@@ -144,6 +152,7 @@ interface BlueprintAsset {
|
||||
|
||||
## Documentation Navigation
|
||||
|
||||
- [Editor User Guide](./editor-guide) - Cocos Creator Blueprint Editor tutorial
|
||||
- [Virtual Machine API](./vm) - BlueprintVM and ECS integration
|
||||
- [ECS Node Reference](./nodes) - Built-in ECS operation nodes
|
||||
- [Custom Nodes](./custom-nodes) - Create custom ECS nodes
|
||||
|
||||
388
docs/src/content/docs/modules/blueprint/editor-guide.md
Normal file
388
docs/src/content/docs/modules/blueprint/editor-guide.md
Normal file
@@ -0,0 +1,388 @@
|
||||
---
|
||||
title: "蓝图编辑器使用指南"
|
||||
description: "Cocos Creator 蓝图可视化脚本编辑器完整使用教程"
|
||||
---
|
||||
|
||||
本指南介绍如何在 Cocos Creator 中使用蓝图可视化脚本编辑器。
|
||||
|
||||
## 下载与安装
|
||||
|
||||
### 下载
|
||||
|
||||
从 GitHub Release 下载最新版本:
|
||||
|
||||
**[下载 Cocos Node Editor v1.0.0](https://github.com/esengine/esengine/releases/tag/cocos-node-editor-v1.0.0)**
|
||||
|
||||
### 安装步骤
|
||||
|
||||
1. 解压 `cocos-node-editor.zip` 到项目的 `extensions` 目录:
|
||||
|
||||
```
|
||||
your-project/
|
||||
├── assets/
|
||||
├── extensions/
|
||||
│ └── cocos-node-editor/ ← 解压到这里
|
||||
└── ...
|
||||
```
|
||||
|
||||
2. 重启 Cocos Creator
|
||||
|
||||
3. 通过菜单 **扩展 → 扩展管理器** 确认插件已启用
|
||||
|
||||
4. 通过菜单 **面板 → Node Editor** 打开编辑器
|
||||
|
||||
## 界面介绍
|
||||
|
||||
- **工具栏** - 位于顶部,包含新建、打开、保存、撤销、重做等操作
|
||||
- **节点面板** - 位于左侧,按分类列出所有可用节点(事件、实体、组件、流程控制等)
|
||||
- **画布区域** - 中间主区域,用于放置和连接节点
|
||||
- **变量面板** - 位于底部,用于定义和管理蓝图变量
|
||||
|
||||
## 画布操作
|
||||
|
||||
| 操作 | 方式 |
|
||||
|------|------|
|
||||
| 平移画布 | 鼠标中键拖拽 / Alt + 左键拖拽 |
|
||||
| 缩放画布 | 鼠标滚轮 |
|
||||
| 打开节点菜单 | 右键点击空白处 |
|
||||
| 框选多个节点 | 在空白处拖拽 |
|
||||
| 追加框选 | Ctrl + 拖拽 |
|
||||
| 删除选中 | Delete 键 |
|
||||
|
||||
## 节点操作
|
||||
|
||||
### 添加节点
|
||||
|
||||
1. **从节点面板拖拽** - 将节点从左侧面板拖到画布
|
||||
2. **右键菜单** - 右键点击画布空白处,选择节点
|
||||
|
||||
### 连接节点
|
||||
|
||||
1. 从输出引脚拖拽到输入引脚
|
||||
2. 兼容类型的引脚会高亮显示
|
||||
3. 松开鼠标完成连接
|
||||
|
||||
**引脚类型说明:**
|
||||
|
||||
| 引脚颜色 | 类型 | 说明 |
|
||||
|---------|------|------|
|
||||
| 白色 ▶ | Exec | 执行流程(控制执行顺序) |
|
||||
| 青色 ◆ | Entity | 实体引用 |
|
||||
| 紫色 ◆ | Component | 组件引用 |
|
||||
| 浅蓝 ◆ | String | 字符串 |
|
||||
| 绿色 ◆ | Number | 数值 |
|
||||
| 红色 ◆ | Boolean | 布尔值 |
|
||||
| 灰色 ◆ | Any | 任意类型 |
|
||||
|
||||
### 删除连接
|
||||
|
||||
点击连接线选中,按 Delete 键删除。
|
||||
|
||||
## 节点类型详解
|
||||
|
||||
### 事件节点 (Event)
|
||||
|
||||
事件节点是蓝图的入口点,当特定事件发生时触发执行。
|
||||
|
||||
| 节点 | 触发时机 | 输出 |
|
||||
|------|---------|------|
|
||||
| **Event BeginPlay** | 蓝图开始运行时 | Exec, Self (实体) |
|
||||
| **Event Tick** | 每帧执行 | Exec, Delta Time |
|
||||
| **Event EndPlay** | 蓝图停止时 | Exec |
|
||||
|
||||
**示例:游戏开始时打印消息**
|
||||
```
|
||||
[Event BeginPlay] ──Exec──→ [Print]
|
||||
└─ Message: "游戏开始!"
|
||||
```
|
||||
|
||||
### 实体节点 (Entity)
|
||||
|
||||
操作 ECS 实体的节点。
|
||||
|
||||
| 节点 | 功能 | 输入 | 输出 |
|
||||
|------|------|------|------|
|
||||
| **Get Self** | 获取当前实体 | - | Entity |
|
||||
| **Create Entity** | 创建新实体 | Exec, Name | Exec, Entity |
|
||||
| **Destroy Entity** | 销毁实体 | Exec, Entity | Exec |
|
||||
| **Find Entity By Name** | 按名称查找 | Name | Entity |
|
||||
| **Find Entities By Tag** | 按标签查找 | Tag | Entity[] |
|
||||
| **Is Valid** | 检查实体有效性 | Entity | Boolean |
|
||||
| **Get/Set Entity Name** | 获取/设置名称 | Entity | String |
|
||||
| **Set Active** | 设置激活状态 | Exec, Entity, Active | Exec |
|
||||
|
||||
**示例:创建新实体**
|
||||
```
|
||||
[Event BeginPlay] ──→ [Create Entity] ──→ [Add Component]
|
||||
└─ Name: "Bullet" └─ Type: Transform
|
||||
```
|
||||
|
||||
### 组件节点 (Component)
|
||||
|
||||
访问和操作 ECS 组件。
|
||||
|
||||
| 节点 | 功能 |
|
||||
|------|------|
|
||||
| **Has Component** | 检查实体是否有指定组件 |
|
||||
| **Get Component** | 获取组件实例 |
|
||||
| **Add Component** | 添加组件到实体 |
|
||||
| **Remove Component** | 移除组件 |
|
||||
| **Get/Set Property** | 获取/设置组件属性 |
|
||||
|
||||
**示例:修改 Transform 组件**
|
||||
```
|
||||
[Get Self] ─Entity─→ [Get Component: Transform] ─Component─→ [Set Property]
|
||||
├─ Property: x
|
||||
└─ Value: 100
|
||||
```
|
||||
|
||||
### 流程控制节点 (Flow)
|
||||
|
||||
控制执行流程的节点。
|
||||
|
||||
#### Branch (分支)
|
||||
|
||||
条件判断,类似 if/else。
|
||||
|
||||
```
|
||||
┌─ True ──→ [DoSomething]
|
||||
[Branch]─┤
|
||||
└─ False ─→ [DoOtherThing]
|
||||
```
|
||||
|
||||
#### Sequence (序列)
|
||||
|
||||
按顺序执行多个分支。
|
||||
|
||||
```
|
||||
┌─ Then 0 ──→ [Step1]
|
||||
[Sequence]─┼─ Then 1 ──→ [Step2]
|
||||
└─ Then 2 ──→ [Step3]
|
||||
```
|
||||
|
||||
#### For Loop (循环)
|
||||
|
||||
循环执行指定次数。
|
||||
|
||||
```
|
||||
[For Loop] ─Loop Body─→ [每次迭代执行]
|
||||
│
|
||||
└─ Completed ────→ [循环结束后执行]
|
||||
```
|
||||
|
||||
| 输入 | 说明 |
|
||||
|------|------|
|
||||
| First Index | 起始索引 |
|
||||
| Last Index | 结束索引 |
|
||||
|
||||
| 输出 | 说明 |
|
||||
|------|------|
|
||||
| Loop Body | 每次迭代执行 |
|
||||
| Index | 当前索引 |
|
||||
| Completed | 循环结束后执行 |
|
||||
|
||||
#### For Each (遍历)
|
||||
|
||||
遍历数组元素。
|
||||
|
||||
#### While Loop (条件循环)
|
||||
|
||||
当条件为真时持续循环。
|
||||
|
||||
#### Do Once (单次执行)
|
||||
|
||||
只执行一次,之后跳过。
|
||||
|
||||
#### Flip Flop (交替执行)
|
||||
|
||||
每次执行时交替触发 A 和 B 输出。
|
||||
|
||||
#### Gate (门)
|
||||
|
||||
可通过 Open/Close/Toggle 控制是否允许执行通过。
|
||||
|
||||
### 时间节点 (Time)
|
||||
|
||||
| 节点 | 功能 | 输出类型 |
|
||||
|------|------|---------|
|
||||
| **Delay** | 延迟指定时间后继续执行 | Exec |
|
||||
| **Get Delta Time** | 获取帧间隔时间 | Number |
|
||||
| **Get Time** | 获取运行总时间 | Number |
|
||||
|
||||
**示例:延迟 2 秒后执行**
|
||||
```
|
||||
[Event BeginPlay] ──→ [Delay] ──→ [Print]
|
||||
└─ Duration: 2.0 └─ "2秒后执行"
|
||||
```
|
||||
|
||||
### 数学节点 (Math)
|
||||
|
||||
| 节点 | 功能 |
|
||||
|------|------|
|
||||
| **Add / Subtract / Multiply / Divide** | 四则运算 |
|
||||
| **Abs** | 绝对值 |
|
||||
| **Clamp** | 限制在范围内 |
|
||||
| **Lerp** | 线性插值 |
|
||||
| **Min / Max** | 最小/最大值 |
|
||||
| **Random Range** | 随机数 |
|
||||
| **Sin / Cos / Tan** | 三角函数 |
|
||||
|
||||
### 调试节点 (Debug)
|
||||
|
||||
| 节点 | 功能 |
|
||||
|------|------|
|
||||
| **Print** | 输出到控制台 |
|
||||
|
||||
## 变量系统
|
||||
|
||||
变量用于在蓝图中存储和共享数据。
|
||||
|
||||
### 创建变量
|
||||
|
||||
1. 在变量面板点击 **+** 按钮
|
||||
2. 输入变量名称
|
||||
3. 选择变量类型
|
||||
4. 设置默认值(可选)
|
||||
|
||||
### 使用变量
|
||||
|
||||
- **拖拽到画布** - 创建 Get 或 Set 节点
|
||||
- **Get 节点** - 读取变量值
|
||||
- **Set 节点** - 写入变量值
|
||||
|
||||
### 变量类型
|
||||
|
||||
| 类型 | 说明 | 默认值 |
|
||||
|------|------|--------|
|
||||
| Boolean | 布尔值 | false |
|
||||
| Number | 数值 | 0 |
|
||||
| String | 字符串 | "" |
|
||||
| Entity | 实体引用 | null |
|
||||
| Vector2 | 二维向量 | (0, 0) |
|
||||
| Vector3 | 三维向量 | (0, 0, 0) |
|
||||
|
||||
### 变量节点错误状态
|
||||
|
||||
如果删除了一个变量,但画布上还有引用该变量的节点:
|
||||
- 节点会显示 **红色边框** 和 **警告图标**
|
||||
- 需要重新创建变量或删除这些节点
|
||||
|
||||
## 快捷键
|
||||
|
||||
| 快捷键 | 功能 |
|
||||
|--------|------|
|
||||
| `Ctrl + S` | 保存蓝图 |
|
||||
| `Ctrl + Z` | 撤销 |
|
||||
| `Ctrl + Shift + Z` | 重做 |
|
||||
| `Ctrl + C` | 复制选中节点 |
|
||||
| `Ctrl + X` | 剪切选中节点 |
|
||||
| `Ctrl + V` | 粘贴节点 |
|
||||
| `Delete` | 删除选中项 |
|
||||
| `Ctrl + A` | 全选 |
|
||||
|
||||
## 保存与加载
|
||||
|
||||
### 保存蓝图
|
||||
|
||||
1. 点击工具栏 **保存** 按钮
|
||||
2. 选择保存位置(**必须保存在 `assets/resources` 目录下**,否则 Cocos Creator 无法动态加载)
|
||||
3. 文件扩展名为 `.blueprint.json`
|
||||
|
||||
> **重要提示**:蓝图文件必须放在 `resources` 目录下,游戏运行时才能通过 `cc.resources.load()` 加载。
|
||||
|
||||
### 加载蓝图
|
||||
|
||||
1. 点击工具栏 **打开** 按钮
|
||||
2. 选择 `.blueprint.json` 文件
|
||||
|
||||
### 蓝图文件格式
|
||||
|
||||
蓝图保存为 JSON 格式,可与 `@esengine/blueprint` 运行时兼容:
|
||||
|
||||
```json
|
||||
{
|
||||
"version": 1,
|
||||
"type": "blueprint",
|
||||
"metadata": {
|
||||
"name": "PlayerController",
|
||||
"description": "玩家控制逻辑"
|
||||
},
|
||||
"variables": [],
|
||||
"nodes": [],
|
||||
"connections": []
|
||||
}
|
||||
```
|
||||
|
||||
## 实战示例
|
||||
|
||||
### 示例 1:移动控制
|
||||
|
||||
实现每帧移动实体:
|
||||
|
||||
```
|
||||
[Event Tick] ─Exec─→ [Get Self] ─Entity─→ [Get Component: Transform]
|
||||
│
|
||||
[Get Delta Time] ▼
|
||||
│ [Set Property: x]
|
||||
│ │
|
||||
[Multiply] ◄──────────────┘
|
||||
│
|
||||
└─ Speed: 100
|
||||
```
|
||||
|
||||
### 示例 2:生命值系统
|
||||
|
||||
受伤后检查死亡:
|
||||
|
||||
```
|
||||
[On Damage Event] ─→ [Get Component: Health] ─→ [Get Property: current]
|
||||
│
|
||||
▼
|
||||
[Subtract]
|
||||
│
|
||||
▼
|
||||
[Set Property: current]
|
||||
│
|
||||
▼
|
||||
┌─ True ─→ [Destroy Self]
|
||||
[Branch]─┤
|
||||
└─ False ─→ (继续)
|
||||
▲
|
||||
│
|
||||
[Less Or Equal]
|
||||
│
|
||||
current <= 0
|
||||
```
|
||||
|
||||
### 示例 3:延迟生成
|
||||
|
||||
每 2 秒生成一个敌人:
|
||||
|
||||
```
|
||||
[Event BeginPlay] ─→ [Do N Times] ─Loop─→ [Delay: 2.0] ─→ [Create Entity: Enemy]
|
||||
│
|
||||
└─ N: 10
|
||||
```
|
||||
|
||||
## 常见问题
|
||||
|
||||
### Q: 节点无法连接?
|
||||
|
||||
检查引脚类型是否匹配。执行引脚(白色)只能连接执行引脚,数据引脚需要类型兼容。
|
||||
|
||||
### Q: 蓝图不执行?
|
||||
|
||||
1. 确保实体添加了 `BlueprintComponent`
|
||||
2. 确保场景添加了 `BlueprintSystem`
|
||||
3. 检查 `autoStart` 是否为 `true`
|
||||
|
||||
### Q: 如何调试?
|
||||
|
||||
使用 **Print** 节点输出变量值到控制台。
|
||||
|
||||
## 下一步
|
||||
|
||||
- [ECS 节点参考](./nodes) - 完整节点列表
|
||||
- [自定义节点](./custom-nodes) - 创建自定义节点
|
||||
- [运行时集成](./vm) - 蓝图虚拟机 API
|
||||
- [实际示例](./examples) - 更多游戏逻辑示例
|
||||
@@ -5,7 +5,15 @@ description: "与 ECS 框架深度集成的可视化脚本系统"
|
||||
|
||||
`@esengine/blueprint` 提供与 ECS 框架深度集成的可视化脚本系统,支持通过节点式编程控制实体行为。
|
||||
|
||||
## 安装
|
||||
## 编辑器下载
|
||||
|
||||
Cocos Creator 蓝图编辑器插件:
|
||||
|
||||
**[下载 Cocos Node Editor v1.0.0](https://github.com/esengine/esengine/releases/tag/cocos-node-editor-v1.0.0)**
|
||||
|
||||
详细使用教程请参考 [编辑器使用指南](./editor-guide)。
|
||||
|
||||
## 安装运行时
|
||||
|
||||
```bash
|
||||
npm install @esengine/blueprint
|
||||
@@ -144,6 +152,7 @@ interface BlueprintAsset {
|
||||
|
||||
## 文档导航
|
||||
|
||||
- [编辑器使用指南](./editor-guide) - Cocos Creator 蓝图编辑器教程
|
||||
- [虚拟机 API](./vm) - BlueprintVM 与 ECS 集成
|
||||
- [ECS 节点参考](./nodes) - 内置 ECS 操作节点
|
||||
- [自定义节点](./custom-nodes) - 创建自定义 ECS 节点
|
||||
|
||||
Reference in New Issue
Block a user