public override void OnEnter(ActorObj actor) { if (actor == null) { return; } m_state = ACTOR_STATE.AS_ATTACK; m_actor = actor; m_curSkillID = m_actor.castSkillID; //if (m_actor != null) //{ // m_actor.m_bIsInAttack = true; //} LuaTable skillDesc = ConfigManager.Instance.Skill.GetSkillConfig(m_curSkillID); if (skillDesc == null) { return; } SkillClassDisplayDesc skillClass = null; if (skillDesc != null) { //if (skillDesc.e_type_1 == 1) { skillClass = m_gameDBMgr.GetSkillClassDisplayDesc(skillDesc.Get <int>("skillDisplayID")); } } m_curSkillDesc = skillDesc; GameObject obj = null; if (skillClass != null) { obj = CoreEntry.gGameObjPoolMgr.InstantiateSkillBase("Skill/SkillBase");; //(GameObject)Instantiate(CoreEntry.gResLoader.LoadResource("Skill/SkillBase")); } else { // LogMgr.Log("Can not found skillClass skillDesc.skillDisplayID: " + skillDesc.Get<int>("skillDisplayID") + " ActorObj: " + m_actor); return; } if (obj == null) { return; } //设置脚本组件 SkillBase skillBase = obj.GetComponent <SkillBase>(); ActorObj hitObj = null; if (CurParam != null) { hitObj = CurParam.HitActor; } skillBase.Init(actor, hitObj, m_curSkillID); m_curSkillBase = skillBase; //霸体时间。不可以转换为其他状态,除了死亡 if (skillDesc.Get <int>("stiff_time") > 0) { StartEndure(); } //m_isSkillCastEnd = false; if (m_curSkillDesc.Get <int>("stiff_time") > 0) { CancelInvoke("SkillCastEnd"); Invoke("SkillCastEnd", m_curSkillDesc.Get <int>("stiff_time") / 1000f); } //一个人的时候触发关门 if (m_actor.mActorType == ActorType.AT_BOSS) { CoreEntry.gSceneMgr.CloseDoor(); } if (null != skillDesc && skillDesc.Get <int>("showtype") == (int)SkillShowType.ST_HUANLING && skillDesc.Get <int>("subtype") != (int)SkillType.SKILL_NORMAL) { bool isHuanlingSkill = false; if (actor.mActorType == ActorType.AT_LOCAL_PLAYER) { isHuanlingSkill = true; } else if (actor.mActorType == ActorType.AT_PET) { PetObj pet = actor as PetObj; if (pet != null && null != pet.m_MasterActor && pet.m_MasterActor.mActorType == ActorType.AT_LOCAL_PLAYER) { isHuanlingSkill = true; } } if (isHuanlingSkill) { EventParameter param = EventParameter.Get(); param.intParameter = skillDesc.Get <int>("showtype"); param.stringParameter = skillDesc.Get <string>("name"); CoreEntry.gEventMgr.TriggerEvent(GameEvent.GE_FLY_SKILL, param); } } }