//初始化AI private void InitAi(BNPC npc) { //如果是npc刷新点 if (npc.data.num == NpcMgr <ServerNPC> .FRESH_NPC) { #if NO_SOLDIER #else BehaviorTree tree = npc.gameObject.GetComponent <BehaviorTree> (); if (tree == null) { tree = npc.gameObject.AddComponent <BehaviorTree>(); } tree.ExternalBehavior = AiLoader.load(AILoader.NPC_FRESH); tree.StartWhenEnabled = true; tree.RestartWhenComplete = false; #endif } else { NPCAIType type = (NPCAIType)npc.dataInScene.AIType; switch (type) { case NPCAIType.Pathfind_Atk: { BehaviorTree tree = npc.gameObject.GetComponent <BehaviorTree> (); if (tree == null) { tree = npc.gameObject.AddComponent <BehaviorTree>(); } tree.ExternalBehavior = AiLoader.load(AILoader.PATHFIND_ATK); tree.StartWhenEnabled = true; tree.RestartWhenComplete = true; break; } case NPCAIType.Simple_PfAtk: { BehaviorTree tree = npc.gameObject.GetComponent <BehaviorTree> (); if (tree == null) { tree = npc.gameObject.AddComponent <BehaviorTree>(); } tree.ExternalBehavior = AiLoader.load(AILoader.SIMPLE_PFATK); tree.StartWhenEnabled = true; tree.RestartWhenComplete = true; break; } case NPCAIType.Patrol: { BehaviorTree tree = npc.gameObject.GetComponent <BehaviorTree> (); if (tree == null) { tree = npc.gameObject.AddComponent <BehaviorTree>(); } tree.ExternalBehavior = AiLoader.load(AILoader.NORMAL_ATTACK); tree.StartWhenEnabled = true; tree.RestartWhenComplete = true; break; } } } }
void AttachAI(ServerNPC npc, int ai) { ServerLifeNpc lifeNpc = npc as ServerLifeNpc; if (lifeNpc == null) { return; } lifeNpc.data.btData = new NPCBattleData(); lifeNpc.data.btData.way = BATTLE_WAY.None; AILoader AiLoader = Core.ResEng.getLoader <AILoader>(); NPCAIType type = (NPCAIType)ai; switch (type) { case NPCAIType.Pathfind_Atk: { BehaviorTree tree = npc.gameObject.GetComponent <BehaviorTree> (); if (tree == null) { tree = npc.gameObject.AddComponent <BehaviorTree>(); } tree.ExternalBehavior = AiLoader.load(AILoader.PATHFIND_ATK); tree.StartWhenEnabled = true; tree.RestartWhenComplete = true; lifeNpc.AutoAiTree = tree; } break; case NPCAIType.Simple_PfAtk: { BehaviorTree tree = npc.gameObject.GetComponent <BehaviorTree> (); if (tree == null) { tree = npc.gameObject.AddComponent <BehaviorTree>(); } tree.ExternalBehavior = AiLoader.load(AILoader.SIMPLE_PFATK); tree.StartWhenEnabled = true; tree.RestartWhenComplete = true; lifeNpc.AutoAiTree = tree; } break; case NPCAIType.Patrol: { BehaviorTree tree = npc.gameObject.GetComponent <BehaviorTree> (); if (tree == null) { tree = npc.gameObject.AddComponent <BehaviorTree>(); } tree.ExternalBehavior = AiLoader.load(AILoader.NORMAL_ATTACK); tree.StartWhenEnabled = true; tree.RestartWhenComplete = true; lifeNpc.AutoAiTree = tree; } break; } }