Files
pixelheros/assets/script/game/map/GameMap.ts
walkpan e880613f8f docs: 为游戏地图模块添加详细的代码注释
为游戏地图模块的脚本文件添加全面的注释,说明每个组件的职责、关键设计、依赖关系和使用方式。注释覆盖了英雄信息面板、技能卡槽位管理器、排行榜弹窗、卡牌控制器、背景滚动组件等核心功能模块,提高了代码的可读性和维护性。

同时修复了英雄预制体的激活状态和技能效果预制体的尺寸参数。
2026-04-07 19:00:30 +08:00

67 lines
2.5 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* @file GameMap.ts
* @description 游戏地图 ECS 实体
*
* 职责:
* 1. 作为地图模块的 **ECS 根实体**,聚合 MapModelComp数据层与 MapViewComp视图层
* 2. 在 init 阶段仅注册 MapModelComp纯数据不依赖节点
* 3. 显式调用 load() 时异步加载地图预制Prefab实例化后将 MapViewComp 挂载到实体上。
*
* 设计说明:
* - 视图层的挂载延后到 load() 完成后,确保 Prefab 加载成功且节点树就绪。
* - 实例化的地图节点被添加至 oops.game.root作为场景显示层的子节点。
* - MapViewComp 从预制体中名为 "map" 的子节点上获取。
*
* 依赖:
* - MapModelCompmodel/MapModelComp.ts—— 存放地图资源路径等数据配置
* - MapViewCompview/MapViewComp.ts—— 地图视图逻辑
* - oops.res —— 资源加载
* - oops.game.root —— 全局显示根节点
*/
/*
* @Author: dgflash
* @Date: 2022-02-12 11:02:21
* @LastEditors: dgflash
* @LastEditTime: 2022-08-04 15:20:55
*/
import { instantiate, Prefab } from "cc";
import { oops } from "../../../../extensions/oops-plugin-framework/assets/core/Oops";
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
import { MapModelComp } from "./model/MapModelComp";
import { MapViewComp } from "./view/MapViewComp";
/** 游戏地图 ECS 实体 */
@ecs.register(`GameMap`)
export class GameMap extends ecs.Entity {
/** 地图数据模型组件(通过 ECS 自动注入) */
MapModel!: MapModelComp;
/** 地图视图组件(通过 ECS 自动注入load() 完成后可用) */
MapView!: MapViewComp;
/**
* ECS 实体初始化:注册数据层组件。
* 视图层在 load() 中异步挂载。
*/
protected init(): void {
this.addComponents<ecs.Comp>(
MapModelComp);
}
/**
* 加载地图显示资源:
* 1. 通过 MapModel.resPrefab 路径加载 Prefab。
* 2. 实例化预制体并挂载到全局根节点。
* 3. 从预制体中提取 MapViewComp 并通过 this.add() 注册到实体。
*/
load() {
oops.res.load(this.MapModel.resPrefab, Prefab, (err: Error | null, res: Prefab) => {
if (err) {
console.error(err);
}
var map = instantiate(res);
map.parent = oops.game.root;
this.add(map.getChildByName("map").getComponent(MapViewComp));
});
}
}