Exemple #1
0
    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);
            }
        }
    }
Exemple #2
0
    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();
    }