using CommonAI.ZoneClient; using ET; using ET.Client; using UnitType = CommonAI.Zone.UnitInfo.UnitType; class BattleUnitFactory : Singleton<BattleUnitFactory>//, ISingletonUpdate { public BattleObject Create(ZoneObject zo) { BattleObject unit = null; if(zo is ZoneActor) { unit = ObjectPool.Instance.Fetch<BattleActor>(); } else if (zo is ZoneUnit) { ZoneUnit zu = zo as ZoneUnit; switch (zu.Info.UType) { case UnitType.TYPE_PLAYER://玩家单位. unit = ObjectPool.Instance.Fetch<BattlePlayer>(); break; case UnitType.TYPE_MONSTER://怪物. unit = ObjectPool.Instance.Fetch<BattleMonster>(); break; case UnitType.TYPE_BUILDING://建筑. case UnitType.TYPE_NPC://NPC. case UnitType.TYPE_NEUTRALITY://NPC. case UnitType.TYPE_SUMMON://召唤单位. case UnitType.TYPE_PET: case UnitType.TYPE_TRIGGER: //触发机关 default: Log.Error($"unknow object enter:{zu.Info.UType} ID:{zu.TemplateID}"); break; } } else if (zo is ZoneSpell) { unit = ObjectPool.Instance.Fetch<BattleSpell>(); } else if (zo is ZoneItem)//掉落物 { } return unit; } }