public void CreatePet(int monsterId, GameObject owner, Affix affix, Vector3 pos) { Log.Sys("Create Pet " + monsterId + " " + owner + " " + pos); if (owner == null) { Debug.LogError("Own NotExist Pet Not Born"); return; } var unitData = Util.GetUnitData(false, monsterId, 1); var Resource = Resources.Load <GameObject>(unitData.ModelName); GameObject g = Instantiate(Resource) as GameObject; NpcAttribute npc = NGUITools.AddMissingComponent <NpcAttribute>(g); var type = Type.GetType("MyLib." + unitData.AITemplate); var t = typeof(NGUITools); var m = t.GetMethod("AddMissingComponent"); Log.AI("Create Certain AI " + unitData.AITemplate + " " + type); var geMethod = m.MakeGenericMethod(type); //var petAI = geMethod.Invoke(null, new object[] { g });// as AIBase; //var petAI = //NGUITools.AddMissingComponent<type> (g); g.transform.parent = transform; g.tag = owner.tag; g.layer = (int)GameLayer.Npc; npc.SetOwnerId(owner.GetComponent <KBEngine.KBNetworkView>().GetLocalId()); npc.spawnTrigger = owner.GetComponent <NpcAttribute>().spawnTrigger; //不可移动Buff //持续时间Buff //无敌不可被攻击Buff //火焰陷阱的特点 特点组合 g.GetComponent <BuffComponent>().AddBuff(affix); var netView = NGUITools.AddMissingComponent <KBEngine.KBNetworkView>(g); netView.SetID(new KBEngine.KBViewID(-1, myPlayer)); netView.IsPlayer = false; //owner.GetComponent<NpcAttribute>().AddSummon(netView.gameObject); npc.SetObjUnitData(unitData); AddObject(netView.GetServerID(), netView); npc.transform.position = pos; if (unitData.IsElite) { npc.transform.localScale = new Vector3(2, 2, 2); } if (npc.tag == GameTag.Enemy) { BattleManager.battleManager.AddEnemy(npc.gameObject); npc.SetDeadDelegate = BattleManager.battleManager.EnemyDead; } }