Skip to content

ECS Framework API v2.2.13


ECS Framework API / World

Class: World

Defined in: packages/core/src/ECS/World.ts:100

World类 - ECS世界管理器

World是Scene的容器,每个World可以管理多个Scene。 World拥有独立的服务容器,用于管理World级别的全局服务。

服务容器层级:

  • Core.services: 应用程序全局服务
  • World.services: World级别服务(每个World独立)
  • Scene.services: Scene级别服务(每个Scene独立)

这种设计允许创建独立的游戏世界,如:

  • 游戏房间(每个房间一个World)
  • 不同的游戏模式
  • 独立的模拟环境

Example

typescript
// 创建游戏房间的World
const roomWorld = new World({ name: 'Room_001' });

// 注册World级别的服务
roomWorld.services.registerSingleton(RoomManager);

// 在World中创建Scene
const gameScene = roomWorld.createScene('game', new Scene());
const uiScene = roomWorld.createScene('ui', new Scene());

// 在Scene中使用World级别的服务
const roomManager = roomWorld.services.resolve(RoomManager);

// 更新整个World
roomWorld.update(deltaTime);

Constructors

Constructor

new World(config): World

Defined in: packages/core/src/ECS/World.ts:110

Parameters

config

IWorldConfig = {}

Returns

World

Properties

name

readonly name: string

Defined in: packages/core/src/ECS/World.ts:101

Accessors

services

Get Signature

get services(): ServiceContainer

Defined in: packages/core/src/ECS/World.ts:130

World级别的服务容器 用于管理World范围内的全局服务

Returns

ServiceContainer


isActive

Get Signature

get isActive(): boolean

Defined in: packages/core/src/ECS/World.ts:536

检查World是否激活

Returns

boolean


sceneCount

Get Signature

get sceneCount(): number

Defined in: packages/core/src/ECS/World.ts:543

获取Scene数量

Returns

number


createdAt

Get Signature

get createdAt(): number

Defined in: packages/core/src/ECS/World.ts:550

获取创建时间

Returns

number

Methods

createScene()

createScene<T>(sceneName, sceneInstance?): T

Defined in: packages/core/src/ECS/World.ts:139

创建并添加Scene到World

Type Parameters

T

T extends IScene

Parameters

sceneName

string

sceneInstance?

T

Returns

T


removeScene()

removeScene(sceneName): boolean

Defined in: packages/core/src/ECS/World.ts:181

移除Scene

Parameters

sceneName

string

Returns

boolean


getScene()

getScene<T>(sceneName): null | T

Defined in: packages/core/src/ECS/World.ts:203

获取Scene

Type Parameters

T

T extends IScene

Parameters

sceneName

string

Returns

null | T


getSceneIds()

getSceneIds(): string[]

Defined in: packages/core/src/ECS/World.ts:210

获取所有Scene ID

Returns

string[]


getAllScenes()

getAllScenes(): IScene[]

Defined in: packages/core/src/ECS/World.ts:217

获取所有Scene

Returns

IScene[]


removeAllScenes()

removeAllScenes(): void

Defined in: packages/core/src/ECS/World.ts:224

移除所有Scene

Returns

void


setSceneActive()

setSceneActive(sceneName, active): void

Defined in: packages/core/src/ECS/World.ts:235

设置Scene激活状态

Parameters

sceneName

string

active

boolean

Returns

void


isSceneActive()

isSceneActive(sceneName): boolean

Defined in: packages/core/src/ECS/World.ts:259

检查Scene是否激活

Parameters

sceneName

string

Returns

boolean


getActiveSceneCount()

getActiveSceneCount(): number

Defined in: packages/core/src/ECS/World.ts:266

获取活跃Scene数量

Returns

number


addGlobalSystem()

addGlobalSystem<T>(system): T

Defined in: packages/core/src/ECS/World.ts:276

添加全局System 全局System会在所有激活Scene之前更新

Type Parameters

T

T extends IGlobalSystem

Parameters

system

T

Returns

T


removeGlobalSystem()

removeGlobalSystem(system): boolean

Defined in: packages/core/src/ECS/World.ts:293

移除全局System

Parameters

system

IGlobalSystem

Returns

boolean


getGlobalSystem()

getGlobalSystem<T>(type): null | T

Defined in: packages/core/src/ECS/World.ts:311

获取全局System

Type Parameters

T

T extends IGlobalSystem

Parameters

type

(...args) => T

Returns

null | T


start()

start(): void

Defined in: packages/core/src/ECS/World.ts:325

启动World

Returns

void


stop()

stop(): void

Defined in: packages/core/src/ECS/World.ts:345

停止World

Returns

void


updateGlobalSystems()

updateGlobalSystems(): void

Defined in: packages/core/src/ECS/World.ts:370

更新World中的全局System 注意:此方法由Core.update()调用,不应直接调用

Returns

void


updateScenes()

updateScenes(): void

Defined in: packages/core/src/ECS/World.ts:387

更新World中的所有激活Scene 注意:此方法由Core.update()调用,不应直接调用

Returns

void


destroy()

destroy(): void

Defined in: packages/core/src/ECS/World.ts:409

销毁World

Returns

void


getStatus()

getStatus(): object

Defined in: packages/core/src/ECS/World.ts:443

获取World状态

Returns

object

name

name: string

isActive

isActive: boolean

sceneCount

sceneCount: number

activeSceneCount

activeSceneCount: number

globalSystemCount

globalSystemCount: number

createdAt

createdAt: number

config

config: object

config.name?

optional name: string

World名称

config.debug?

optional debug: boolean

是否启用调试模式

config.maxScenes?

optional maxScenes: number

最大Scene数量限制

config.autoCleanup?

optional autoCleanup: boolean

是否自动清理空Scene

scenes

scenes: object[]


getStats()

getStats(): object

Defined in: packages/core/src/ECS/World.ts:463

获取World统计信息

Returns

object

totalEntities

totalEntities: number = 0

totalSystems

totalSystems: number

memoryUsage

memoryUsage: number = 0

performance

performance: object

performance.averageUpdateTime

averageUpdateTime: number = 0

performance.maxUpdateTime

maxUpdateTime: number = 0

Released under the MIT License.