文档更新

This commit is contained in:
YHH
2025-08-14 18:38:09 +08:00
parent 0b7e623748
commit 85cd93e51a
3 changed files with 51 additions and 5 deletions

View File

@@ -49,7 +49,7 @@ npm install @esengine/ecs-framework
### 1. 基础使用
```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 });
@@ -57,6 +57,7 @@ const scene = new Scene();
Core.setScene(scene);
// 定义组件
@ECSComponent('Position')
class PositionComponent extends Component {
public x: number = 0;
public y: number = 0;
@@ -68,6 +69,7 @@ class PositionComponent extends Component {
}
}
@ECSComponent('Velocity')
class VelocityComponent extends Component {
public x: number = 0;
public y: number = 0;
@@ -85,6 +87,7 @@ entity.addComponent(new PositionComponent(100, 100));
entity.addComponent(new VelocityComponent(5, 0));
// 创建系统
@ECSSystem('Movement')
class MovementSystem extends EntitySystem {
constructor() {
super(Matcher.all(PositionComponent, VelocityComponent));
@@ -107,14 +110,48 @@ scene.addEntityProcessor(new MovementSystem());
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
import { Matcher } from '@esengine/ecs-framework';
import { Matcher, ECSSystem } from '@esengine/ecs-framework';
// 使用Matcher和EntitySystem进行高效查询
@ECSSystem('Query')
class QuerySystem extends EntitySystem {
constructor() {
super(Matcher.all(PositionComponent, VelocityComponent).none(HealthComponent));
@@ -127,6 +164,7 @@ class QuerySystem extends EntitySystem {
}
// 更复杂的查询条件
@ECSSystem('Combat')
class CombatSystem extends EntitySystem {
constructor() {
super(

12
package-lock.json generated
View File

@@ -3001,6 +3001,13 @@
"integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==",
"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": {
"version": "8.18.1",
"resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz",
@@ -11073,7 +11080,6 @@
"version": "10.0.0",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz",
"integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==",
"dev": true,
"funding": [
"https://github.com/sponsors/broofa",
"https://github.com/sponsors/ctavan"
@@ -11531,7 +11537,7 @@
},
"packages/core": {
"name": "@esengine/ecs-framework",
"version": "2.1.41",
"version": "2.1.43",
"license": "MIT",
"devDependencies": {
"@rollup/plugin-commonjs": "^28.0.3",
@@ -11628,11 +11634,13 @@
"@esengine/ecs-framework": "file:../core",
"@esengine/network-shared": "file:../network-shared",
"reflect-metadata": "^0.2.2",
"uuid": "^10.0.0",
"ws": "^8.18.2"
},
"devDependencies": {
"@types/jest": "^29.5.14",
"@types/node": "^20.19.0",
"@types/uuid": "^10.0.0",
"@types/ws": "^8.18.1",
"jest": "^29.7.0",
"rimraf": "^5.0.0",

View File

@@ -1,6 +1,6 @@
{
"name": "@esengine/ecs-framework",
"version": "2.1.41",
"version": "2.1.43",
"description": "用于Laya、Cocos Creator等JavaScript游戏引擎的高性能ECS框架",
"main": "bin/index.js",
"types": "bin/index.d.ts",