public void DoUpdate(float deltaTime) { if (!IsAlive || !gameObject.activeInHierarchy) { return; } for (int i = 0, length = listBuff.Count; i < length; ++i) { if (listBuff[i].IsEnd) { listRemoveBuff.Add(listBuff[i]); } else { listBuff[i].DoUpdate(deltaTime); } } for (int i = 0, length = listRemoveBuff.Count; i < length; ++i) { BuffBase removeBuff = listRemoveBuff[i]; listBuff.Remove(removeBuff); removeBuff.Remove(false); } listRemoveBuff.Clear(); for (int i = 0, length = listResumeSkillEnergy.Count; i < length; ++i) { ResumeEnergy single = listResumeSkillEnergy[i]; if (single) { single.DoUpdate(deltaTime); } } for (int i = 0, length = listSearchEnemy.Count; i < length; ++i) { SearchEnemyBase single = listSearchEnemy[i]; if (single) { single.DoUpdate(deltaTime); } } for (int i = 0, length = listSkills.Count; i < length; ++i) { SkillBase single = listSkills[i]; if (single) { single.DoUpdate(deltaTime); } } OnUpdate(deltaTime); UIHeadInfo.DoUpdate(deltaTime); for (int i = 0, length = listExtModules.Count; i < length; ++i) { InteractiveObjExt single = listExtModules[i]; if (single) { single.DoUpdate(deltaTime); } } }
void Start() { ID = ++MaxID; RealCamp = Camp; HP = StartHP; ColliderSelf = gameObject.GetComponent <Collider>(); if (!ColliderSelf) { ColliderSelf = gameObject.AddComponent <BoxCollider>(); } IsTrigger = ColliderSelf.isTrigger; Role = gameObject.GetComponentInChildren <Asset_Role>(); if (Role) { Role.Init(this); } else if (this != WorldInteractObj.Instance) { Debug.LogError(gameObject.name + "下没有找到Asset_Role!"); } dicSkillEnergy.Clear(); SearchEnemyBase[] searchEnemies = GetComponentsInChildren <SearchEnemyBase>(true); for (int i = 0, length = searchEnemies.Length; i < length; ++i) { SearchEnemyBase single = searchEnemies[i]; single.Init(this); listSearchEnemy.Add(single); } SkillEnergy[] skillResources = GetComponentsInChildren <SkillEnergy>(true); for (int i = 0, length = skillResources.Length; i < length; ++i) { SkillEnergy single = skillResources[i]; single.Init(this); dicSkillEnergy[single.E_type] = single; } ResumeEnergy[] resumeSkillResources = GetComponentsInChildren <ResumeEnergy>(true); for (int i = 0, length = resumeSkillResources.Length; i < length; ++i) { ResumeEnergy single = resumeSkillResources[i]; single.Init(this); listResumeSkillEnergy.Add(single); } SkillBase[] skills = GetComponentsInChildren <SkillBase>(true); for (int i = 0, length = skills.Length; i < length; ++i) { SkillBase single = skills[i]; single.Init(this); listSkills.Add(single); } listSkills.Sort((a, b) => { return(b.CastOrder - a.CastOrder); }); fAttackMinRange = AttackMinRange; OutBattleRange = Mathf.Max(fAttackMaxRange = AttackMaxRange, OutBattleRange); Init(); InitBloodUI(); BattleManager.Instance.RegisterInteractiveObj(this); InteractiveObjExt[] exts = GetComponentsInChildren <InteractiveObjExt>(true); for (int i = 0, length = exts.Length; i < length; ++i) { InteractiveObjExt single = exts[i]; single.Init(this); listExtModules.Add(single); } OnInitOver.Invoke(); }