diff --git a/packages/core/src/Core.ts b/packages/core/src/Core.ts index b4844d24..a3c95072 100644 --- a/packages/core/src/Core.ts +++ b/packages/core/src/Core.ts @@ -12,6 +12,7 @@ import { IScene } from './ECS/IScene'; import { ServiceContainer } from './Core/ServiceContainer'; import { PluginManager } from './Core/PluginManager'; import { IPlugin } from './Core/Plugin'; +import { WorldManager } from './ECS/WorldManager'; /** * 游戏引擎核心类 @@ -122,6 +123,13 @@ export class Core { */ private _sceneManager: SceneManager; + /** + * World管理器 + * + * 管理多个独立的World实例(可选)。 + */ + private _worldManager: WorldManager; + /** * 插件管理器 * @@ -180,6 +188,10 @@ export class Core { } }); + // 初始化World管理器 + this._worldManager = new WorldManager(); + this._serviceContainer.registerInstance(WorldManager, this._worldManager); + // 初始化插件管理器 this._pluginManager = new PluginManager(); this._pluginManager.initialize(this, this._serviceContainer); diff --git a/packages/core/src/ECS/WorldManager.ts b/packages/core/src/ECS/WorldManager.ts index 854b4e16..5296e8a9 100644 --- a/packages/core/src/ECS/WorldManager.ts +++ b/packages/core/src/ECS/WorldManager.ts @@ -1,5 +1,6 @@ import { World, IWorldConfig } from './World'; import { createLogger } from '../Utils/Logger'; +import type { IService } from '../Core/ServiceContainer'; const logger = createLogger('WorldManager'); @@ -61,7 +62,7 @@ export interface IWorldManagerConfig { * } * ``` */ -export class WorldManager { +export class WorldManager implements IService { private readonly _config: IWorldManagerConfig; private readonly _worlds: Map = new Map(); private readonly _activeWorlds: Set = new Set(); @@ -387,6 +388,14 @@ export class WorldManager { logger.info('WorldManager已销毁'); } + /** + * 实现 IService 接口的 dispose 方法 + * 调用 destroy 方法进行清理 + */ + public dispose(): void { + this.destroy(); + } + // ===== 私有方法 ===== /**