refactor(渲染): 重构实体层级管理方式
- 移除通过 setSiblingIndex 手动设置层级的方式 - 新增 HERO、LINE1、LINE2、SKILL 等容器节点自动管理层级 - 调整英雄、怪物、技能等实体的父节点到对应容器 - 优化提示信息的位置偏移量
This commit is contained in:
@@ -42,20 +42,15 @@ export class Monster extends ecs.Entity {
|
||||
var path = "game/heros/"+HeroInfo[uuid].path;
|
||||
var prefab: Prefab = oops.res.get(path, Prefab)!;
|
||||
var node = instantiate(prefab);
|
||||
|
||||
node.parent = scene.entityLayer!.node!
|
||||
let LINE1=scene.entityLayer!.node!.getChildByName("LINE1")!;
|
||||
let LINE2=scene.entityLayer!.node!.getChildByName("LINE2")!;
|
||||
// 🔥 设置初始 SiblingIndex - 防止溢出
|
||||
const baseLane = lane === 0 ? LINE1 : LINE2;
|
||||
node.parent = baseLane
|
||||
const collider = node.getComponent(BoxCollider2D);
|
||||
if (collider) collider.enabled = false; // 先禁用 // 延迟一帧启用碰撞体
|
||||
node.setScale(size*node.scale.x,size*node.scale.y);
|
||||
node.setPosition(pos)
|
||||
|
||||
// 🔥 设置初始 SiblingIndex - 防止溢出
|
||||
const baseLane = lane === 0 ? IndexSet.MON1 : IndexSet.MON2;
|
||||
// 使用模运算防止索引溢出,确保在安全范围内循环
|
||||
const safeSpawnOrder = spawnOrder % 999; // 限制在999以内,避免溢出到其他层级
|
||||
const initialSiblingIndex = baseLane + safeSpawnOrder;
|
||||
node.setSiblingIndex(initialSiblingIndex);
|
||||
console.log("mon",node.getSiblingIndex());
|
||||
var view = node.getComponent(HeroViewComp)!;
|
||||
const model = this.get(HeroAttrsComp);
|
||||
const skillsComp = this.get(HeroSkillsComp);
|
||||
@@ -71,11 +66,10 @@ export class Monster extends ecs.Entity {
|
||||
model.type = hero.type;
|
||||
model.fac = FacSet.MON;
|
||||
model.is_boss = monType == MonType.BOSS;
|
||||
if(model.is_boss) node.setSiblingIndex(IndexSet.BOSS);
|
||||
if(model.is_boss) node.parent = scene.entityLayer!.node!.getChildByName("HERO")!;
|
||||
if(!model.is_boss){
|
||||
model.is_kalami = true;
|
||||
}
|
||||
|
||||
// 根据等级和类型获取怪物属性
|
||||
const {hp, mp, ap, map, def, mdef} = getMonAttr(lv, uuid, monType);
|
||||
// 初始化属性数组
|
||||
|
||||
Reference in New Issue
Block a user