文档更新
This commit is contained in:
42
README.md
42
README.md
@@ -49,7 +49,7 @@ npm install @esengine/ecs-framework
|
|||||||
### 1. 基础使用
|
### 1. 基础使用
|
||||||
|
|
||||||
```typescript
|
```typescript
|
||||||
import { Core, Scene, Entity, Component, EntitySystem, Matcher, Time } from '@esengine/ecs-framework';
|
import { Core, Scene, Entity, Component, EntitySystem, ECSComponent, ECSSystem, Matcher, Time } from '@esengine/ecs-framework';
|
||||||
|
|
||||||
// 创建核心实例
|
// 创建核心实例
|
||||||
const core = Core.create({ debug: true });
|
const core = Core.create({ debug: true });
|
||||||
@@ -57,6 +57,7 @@ const scene = new Scene();
|
|||||||
Core.setScene(scene);
|
Core.setScene(scene);
|
||||||
|
|
||||||
// 定义组件
|
// 定义组件
|
||||||
|
@ECSComponent('Position')
|
||||||
class PositionComponent extends Component {
|
class PositionComponent extends Component {
|
||||||
public x: number = 0;
|
public x: number = 0;
|
||||||
public y: number = 0;
|
public y: number = 0;
|
||||||
@@ -68,6 +69,7 @@ class PositionComponent extends Component {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ECSComponent('Velocity')
|
||||||
class VelocityComponent extends Component {
|
class VelocityComponent extends Component {
|
||||||
public x: number = 0;
|
public x: number = 0;
|
||||||
public y: number = 0;
|
public y: number = 0;
|
||||||
@@ -85,6 +87,7 @@ entity.addComponent(new PositionComponent(100, 100));
|
|||||||
entity.addComponent(new VelocityComponent(5, 0));
|
entity.addComponent(new VelocityComponent(5, 0));
|
||||||
|
|
||||||
// 创建系统
|
// 创建系统
|
||||||
|
@ECSSystem('Movement')
|
||||||
class MovementSystem extends EntitySystem {
|
class MovementSystem extends EntitySystem {
|
||||||
constructor() {
|
constructor() {
|
||||||
super(Matcher.all(PositionComponent, VelocityComponent));
|
super(Matcher.all(PositionComponent, VelocityComponent));
|
||||||
@@ -107,14 +110,48 @@ scene.addEntityProcessor(new MovementSystem());
|
|||||||
Core.update(deltaTime);
|
Core.update(deltaTime);
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### 2. 类型装饰器
|
||||||
|
|
||||||
|
在代码压缩混淆后,类名会改变导致框架无法识别组件类型。使用装饰器确保稳定性:
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
import { ECSComponent, ECSSystem } from '@esengine/ecs-framework';
|
||||||
|
|
||||||
|
// 组件装饰器
|
||||||
|
@ECSComponent('Position')
|
||||||
|
class PositionComponent extends Component {
|
||||||
|
public x: number = 0;
|
||||||
|
public y: number = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ECSComponent('Velocity')
|
||||||
|
class VelocityComponent extends Component {
|
||||||
|
public x: number = 0;
|
||||||
|
public y: number = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 系统装饰器
|
||||||
|
@ECSSystem('Movement')
|
||||||
|
class MovementSystem extends EntitySystem {
|
||||||
|
constructor() {
|
||||||
|
super(Matcher.all(PositionComponent, VelocityComponent));
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override process(entities: Entity[]) {
|
||||||
|
// 处理逻辑
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
## 高级特性
|
## 高级特性
|
||||||
|
|
||||||
### 查询系统
|
### 查询系统
|
||||||
|
|
||||||
```typescript
|
```typescript
|
||||||
import { Matcher } from '@esengine/ecs-framework';
|
import { Matcher, ECSSystem } from '@esengine/ecs-framework';
|
||||||
|
|
||||||
// 使用Matcher和EntitySystem进行高效查询
|
// 使用Matcher和EntitySystem进行高效查询
|
||||||
|
@ECSSystem('Query')
|
||||||
class QuerySystem extends EntitySystem {
|
class QuerySystem extends EntitySystem {
|
||||||
constructor() {
|
constructor() {
|
||||||
super(Matcher.all(PositionComponent, VelocityComponent).none(HealthComponent));
|
super(Matcher.all(PositionComponent, VelocityComponent).none(HealthComponent));
|
||||||
@@ -127,6 +164,7 @@ class QuerySystem extends EntitySystem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 更复杂的查询条件
|
// 更复杂的查询条件
|
||||||
|
@ECSSystem('Combat')
|
||||||
class CombatSystem extends EntitySystem {
|
class CombatSystem extends EntitySystem {
|
||||||
constructor() {
|
constructor() {
|
||||||
super(
|
super(
|
||||||
|
|||||||
12
package-lock.json
generated
12
package-lock.json
generated
@@ -3001,6 +3001,13 @@
|
|||||||
"integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==",
|
"integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"node_modules/@types/uuid": {
|
||||||
|
"version": "10.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz",
|
||||||
|
"integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
"node_modules/@types/ws": {
|
"node_modules/@types/ws": {
|
||||||
"version": "8.18.1",
|
"version": "8.18.1",
|
||||||
"resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz",
|
"resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz",
|
||||||
@@ -11073,7 +11080,6 @@
|
|||||||
"version": "10.0.0",
|
"version": "10.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz",
|
||||||
"integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==",
|
"integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==",
|
||||||
"dev": true,
|
|
||||||
"funding": [
|
"funding": [
|
||||||
"https://github.com/sponsors/broofa",
|
"https://github.com/sponsors/broofa",
|
||||||
"https://github.com/sponsors/ctavan"
|
"https://github.com/sponsors/ctavan"
|
||||||
@@ -11531,7 +11537,7 @@
|
|||||||
},
|
},
|
||||||
"packages/core": {
|
"packages/core": {
|
||||||
"name": "@esengine/ecs-framework",
|
"name": "@esengine/ecs-framework",
|
||||||
"version": "2.1.41",
|
"version": "2.1.43",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@rollup/plugin-commonjs": "^28.0.3",
|
"@rollup/plugin-commonjs": "^28.0.3",
|
||||||
@@ -11628,11 +11634,13 @@
|
|||||||
"@esengine/ecs-framework": "file:../core",
|
"@esengine/ecs-framework": "file:../core",
|
||||||
"@esengine/network-shared": "file:../network-shared",
|
"@esengine/network-shared": "file:../network-shared",
|
||||||
"reflect-metadata": "^0.2.2",
|
"reflect-metadata": "^0.2.2",
|
||||||
|
"uuid": "^10.0.0",
|
||||||
"ws": "^8.18.2"
|
"ws": "^8.18.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/jest": "^29.5.14",
|
"@types/jest": "^29.5.14",
|
||||||
"@types/node": "^20.19.0",
|
"@types/node": "^20.19.0",
|
||||||
|
"@types/uuid": "^10.0.0",
|
||||||
"@types/ws": "^8.18.1",
|
"@types/ws": "^8.18.1",
|
||||||
"jest": "^29.7.0",
|
"jest": "^29.7.0",
|
||||||
"rimraf": "^5.0.0",
|
"rimraf": "^5.0.0",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@esengine/ecs-framework",
|
"name": "@esengine/ecs-framework",
|
||||||
"version": "2.1.41",
|
"version": "2.1.43",
|
||||||
"description": "用于Laya、Cocos Creator等JavaScript游戏引擎的高性能ECS框架",
|
"description": "用于Laya、Cocos Creator等JavaScript游戏引擎的高性能ECS框架",
|
||||||
"main": "bin/index.js",
|
"main": "bin/index.js",
|
||||||
"types": "bin/index.d.ts",
|
"types": "bin/index.d.ts",
|
||||||
|
|||||||
Reference in New Issue
Block a user