protected bool DestroyPrefabEffect(UEffectPrefabParam _effectParam)
        {
            //删实例
            if (_effectParam.EffectGameObject != null)
            {
                UEffectNode tmpNode = _effectParam.EffectGameObject.GetComponent <UEffectNode>();
                if (tmpNode != null)
                {
                    tmpNode.To <UEffectNodeData_Prefab>().StopEffect();
                    UnRegisterEffectPrefabNode(tmpNode, _effectParam.AttachEffectType);
                }
                _effectParam.EffectRes.DestroyInstanceRes(ref _effectParam.EffectGameObject);
            }


            //删资源
            UEffectDataLoadParam loadParam = null;

            if (m_dicEffectPrefabTypeUsed.TryGetValue(_effectParam.AttachEffectType, out loadParam) && _effectParam.IsDestroyRes)
            {
                if (_effectParam is UEffectPrefabAsyncParam)
                {
                    AssetBundleManager.ReleaseResNodeAsync(this, loadParam.RefferencePrefabResNode, this, true);
                }
                else
                {
                    AssetBundleManager.ReleaseResNode(this, loadParam.RefferencePrefabResNode, true);
                }
                m_dicEffectPrefabTypeUsed.Remove(_effectParam.AttachEffectType);
            }


            return(true);
        }
        //同步加载
        protected ResNode LoadEffectPrefab(UEffectPrefabParam _effectParam)
        {
            if (!m_dicEffectDataTable.ContainsKey(_effectParam.AttachEffectType))
            {
                Trace.LogWarning("UI效果资源数据容器 没有类型:" + _effectParam.AttachEffectType + " 的数据");
                return(null);
            }
            UEffectDataLoadParam data = null;

            {
                ResNodeHandleParamBase param = new ResNodeHandleParam_Path(AssetType.Asset_Prefab, UPath.UArtistEffectPath + m_dicEffectDataTable[_effectParam.AttachEffectType].EffectPath);

                var resNode = AssetBundleManager.GetResNode(this, param);
                if (resNode == null)
                {
                    Trace.LogError("无法取资源:" + UPath.UArtistEffectPath + m_dicEffectDataTable[_effectParam.AttachEffectType].EffectPath);
                    return(null);
                }
                //AssetBundleManager.SaveMemory(resNode);
                //当前使用的效果类型超出了限定值,先移除下无效的记录
                if (m_dicEffectPrefabTypeUsed.Count >= MaxEffectPrefabTypeCount)
                {
                    ClearUnusedEffectPrefabType();
                }
                data = new UEffectDataLoadParam(resNode);
                m_dicEffectPrefabTypeUsed.Add(_effectParam.AttachEffectType, data);
            }

            _effectParam.EffectRes = data.RefferencePrefabResNode;
            return(data.RefferencePrefabResNode);
        }
        protected bool CreatePrefabEffect(UEffectPrefabParam _effectParam)
        {
            UEffectDataLoadParam data = null;

            //已经加载过的直接实例化
            if (m_dicEffectPrefabTypeUsed.TryGetValue(_effectParam.AttachEffectType, out data))
            {
                _effectParam.EffectRes = data.RefferencePrefabResNode;
            }
            else
            {
                if (_effectParam is UEffectPrefabAsyncParam)
                {
                    AsyncLoadEffectPrefab(_effectParam);
                    return(true);
                }
                else
                {
                    if (LoadEffectPrefab(_effectParam) == null)
                    {
                        return(false);
                    }
                }
            }


            InstantiateEffectPrefab(_effectParam);

            InitEffectPrefabRefParam(_effectParam);


            return(true);
        }