import { Vec3, Node } from "cc"; import { ViewUtil } from "../../../../extensions/oops-plugin-framework/assets/core/utils/ViewUtil"; import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS"; import { ObstacleModelComp } from "./model/ObstacleModelComp"; import { ObstacleViewComp } from "./view/ObstacleViewComp"; /** * 障碍物实体 */ @ecs.register('Obstacle') export class Obstacle extends ecs.Entity { ObstacleModel!: ObstacleModelComp; protected init() { // 添加障碍物数据组件 this.addComponents(ObstacleModelComp); } destroy(): void { // 如果该组件对象是由ecs系统外部创建的,则不可回收,需要用户自己手动进行回收。 this.remove(ObstacleViewComp); super.destroy(); } /** 加载关卡显示对象(cc.Component在创建后,添加到ECS框架中,使实体上任何一个ECS组件都可以通过 ECS API 获取到视图层对象 */ load(parent: Node, pos: Vec3 = Vec3.ZERO) { var node = ViewUtil.createPrefabNode("game/prefab/obstacle"); var mv = node.getComponent(ObstacleViewComp)!; this.add(mv); node.parent = parent; node.setPosition(pos); } } export class EcsObstacleSystem extends ecs.System { constructor() { super(); } }