protected void LoadEffectComplete(LoadedObjData resObj, LoadCompleteCallBackParameter parameter) { AddEffectData param1 = null; //if (parameter != null) { param1 = parameter.Parameter1 as AddEffectData; } LoadEffectComplete(resObj, param1); }
protected void LoadEffectComplete(LoadedObjData resObj, AddEffectData parameter1) { AddEffectData curData = parameter1; if (curData == null) { return; } Object loadedObj = resObj.LoadedObj; if (loadedObj == null) { LogModule.ErrorLog("add effect error:"); if (null != curData._delPlayEffect) { curData._delPlayEffect(null, curData._param); } return; } if (null == curData._effectData) { LogModule.ErrorLog("effectData is null"); if (null != curData._delPlayEffect) { curData._delPlayEffect(null, curData._param); } return; } if (null == curData._parentObj) { LogModule.DebugLog("curData._parentObj is null"); if (null != curData._delPlayEffect) { curData._delPlayEffect(null, curData._param); } return; } if (!m_NeedPlayEffectIdCacheList.Contains(curData._effectData.EffectID)) { if (null != curData._delPlayEffect) { curData._delPlayEffect(null, curData._param); } return; } GameObject effectObj = GameObject.Instantiate(loadedObj) as GameObject; if (null == effectObj) { if (null != curData._delPlayEffect) { curData._delPlayEffect(null, curData._param); } return; } GameObject fxController = ResourceManager.InstantiateResource("Prefab/Effect/FXController") as GameObject; if (null == fxController) { GameObject.Destroy(effectObj); LogModule.ErrorLog("can't find prefab fxcontroller in Prefab/Effect/FXController"); return; } FXController controllerComponent = fxController.GetComponent <FXController>(); if (controllerComponent == null) { LogModule.ErrorLog("can not find fxcontroller on gameobject"); GameObject.Destroy(fxController); GameObject.Destroy(effectObj); if (null != curData._delPlayEffect) { curData._delPlayEffect(null, curData._param); } return; } controllerComponent.m_Path = resObj.Url; ResourcesManager.Instance.AddCachedRef(controllerComponent.m_Path, EResourceType.Effect); m_NeedPlayEffectIdCacheList.Remove(curData._effectData.EffectID); effectObj.SetActive(false); if (null != curData._parentObj) { Utils.SetParent(fxController.transform, curData._parentObj.transform); } Utils.SetParent(effectObj.transform, fxController.transform); effectObj.transform.localPosition = new Vector3(curData._effectData.X, curData._effectData.Y, curData._effectData.Z); effectObj.transform.localRotation = Quaternion.Euler(curData._effectData.RotationX, curData._effectData.RotationY, curData._effectData.RotationZ); if (curData._effectData.Type == (int)EEffectChangeType.TYPE_TARGETAREA) { //add 由目标位置确定的区域特效 Games.SkillModle.SkillCore.SkillTargetData targetData = curData._param as Games.SkillModle.SkillCore.SkillTargetData; if (targetData != null && targetData._hasSet) { Vector3 cacPos = effectObj.transform.position; cacPos = GetTargetAreaPos(targetData, cacPos); effectObj.transform.position = cacPos; } } controllerComponent.OnlyDeactivate = curData._effectData.IsOnlyDeactive; controllerComponent.Delay = curData._effectData.DelayTime; controllerComponent.Duration = curData._effectData.Duration; controllerComponent.EffectGameObj = m_EffectGameObj; controllerComponent.IsFellowOwner = curData._effectData.IsFellowOwner; controllerComponent.EffectID = curData._effectData.EffectID; controllerComponent.Play(this); //进行一些特效的额外索引 OnAddEffectComplete(curData); if (null != curData._delPlayEffect) { curData._delPlayEffect(effectObj, curData._param); } }