public void Init(InteractiveObj master) { Master = master; counter = 0; tarSkillEnergy = master.GetSkillEnergy(E_Type); }
public virtual bool HasSkillEnergy(WorldSetting.Energy type, float value) { SkillEnergy skillResource = GetSkillEnergy(type); return(skillResource && skillResource.Current >= value); }
/// <summary> /// 尝试增/减技能资源 /// </summary> /// <param name="type">技能资源类型</param> /// <param name="value">改变数量</param> /// <param name="allowFree">当目标资源不存在时也判断为成功</param> /// <returns></returns> public virtual bool TryChangeSkillEnergy(WorldSetting.Energy type, float value) { SkillEnergy skillEnergy = GetSkillEnergy(type); return(skillEnergy && skillEnergy.ChangeValue(value)); }
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(); }