Beispiel #1
0
        public override void Preload(ISkillCellData cellData, SkillBase skillBase)
        {
            //m_dataIndex = param.damageCellIndex;
            m_oneDamageInfo = (OneDamageInfo)cellData;
            m_skillBase     = skillBase;

            GameObject frameStopObj = CoreEntry.gGameObjPoolMgr.InstantiateSkillCell("Skill/Cell/frameStop");

            if (frameStopObj != null)
            {
                frameStopObj.transform.parent = transform;

                ISkillCell skillCell = frameStopObj.GetComponent <ISkillCell>();

                skillCell.Preload(m_oneDamageInfo.frameStopDesc, m_skillBase);

                m_skillBase.AddSkillCell(frameStopObj);
            }

            if (m_oneDamageInfo.cameraShakeDesc != null)
            {
                GameObject cellObj = CoreEntry.gGameObjPoolMgr.InstantiateSkillCell(m_oneDamageInfo.cameraShakeDesc.prefabPath);
                cellObj.transform.parent = transform;

                ISkillCell skillCell = cellObj.GetComponent <ISkillCell>();
                skillCell.Preload(m_oneDamageInfo.cameraShakeDesc, m_skillBase);

                m_skillBase.AddSkillCell(cellObj);
            }
        }
Beispiel #2
0
        public void Preload(ActorObj own, int skillID)
        {
            m_skillID            = skillID;
            m_onlyShowSkillScope = true;
            m_actor     = own;
            m_skillDesc = ConfigManager.Instance.Skill.GetSkillConfig(m_skillID);
            if (m_skillDesc == null)
            {
                return;
            }

            SkillClassDisplayDesc skillClass = m_gameDBMgr.GetSkillClassDisplayDesc(m_skillDesc.Get <int>("skillDisplayID"));

            if (skillClass == null)
            {
                return;
            }

            //吟唱阶段
            for (int i = 0; i < skillClass.prepareStageDataList.Count; ++i)
            {
                GameObject cellObj = CoreEntry.gGameObjPoolMgr.InstantiateSkillCell(skillClass.prepareStageDataList[i].prefabPath);
                cellObj.transform.parent = transform;

                ISkillCell skillCell = cellObj.GetComponent <ISkillCell>();
                skillCell.Preload(skillClass.prepareStageDataList[i], this);
                AddSkillCell(cellObj);
            }

            //技能元素
            for (int i = 0; i < skillClass.castStageDataList.Count; ++i)
            {
                GameObject cellObj = CoreEntry.gGameObjPoolMgr.InstantiateSkillCell(skillClass.castStageDataList[i].prefabPath);
                if (cellObj == null)
                {
                    LogMgr.UnityError("Can not found prefab: " + skillClass.castStageDataList[i].prefabPath + " ! of skillID " + skillClass.skillID + " : " + skillClass.castStageDataList[i].ToString());
                    continue;
                }

                cellObj.transform.parent = transform;

                ISkillCell skillCell = cellObj.GetComponent <ISkillCell>();
                skillCell.Preload(skillClass.castStageDataList[i], this);
                AddSkillCell(cellObj);
            }

            // 动作特效加载
            LuaTable skill_action = CoreEntry.gSkillMgr.GetSkillActon(skillID);

            if (skill_action != null && skill_action.Get <string>("skilleffect").Length > 0)
            {
                GameObject efxObj = CoreEntry.gGameObjPoolMgr.InstantiateEffect(skill_action.Get <string>("skilleffect"));
                if (efxObj != null)
                {
                    CoreEntry.gGameObjPoolMgr.Destroy(efxObj);
                }
                else
                {
                    LogMgr.LogError("can not find attackEfxPrefab path: " + skill_action.Get <string>("skilleffect"));
                }
            }

            // 受击特效加载
            string pfx_hurt = m_skillDesc.Get <string>("pfx_hurt");

            if (pfx_hurt.Length > 0)
            {
                GameObject efxObj = CoreEntry.gGameObjPoolMgr.InstantiateEffect(pfx_hurt);
                if (efxObj != null)
                {
                    CoreEntry.gGameObjPoolMgr.Destroy(efxObj);
                }
            }

            DestroyEfx();
        }