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);
        }
    }