예제 #1
0
 public AddEffectData(GameObject parentObj, Tab_Effect effectData, PlayEffectDelegate delPlayEffect, object param)
 {
     _parentObj     = parentObj;
     _effectData    = effectData;
     _delPlayEffect = delPlayEffect;
     _param         = param;
 }
예제 #2
0
 public void PlayEffect(int effectID, PlayEffectDelegate delPalyEffect = null, object param = null)
 {
     if (m_objEffectController)
     {
         m_objEffectController.PlayEffect(effectID, delPalyEffect, param);
     }
 }
    protected override void LoadEffect(Tab_Effect effectData, PlayEffectDelegate delPlayEffect, object param)
    {
        if (effectData == null)
        {
            return;
        }
        if (m_effectBindPointCache == null)
        {
            return;
        }

        GameObject effectParentObj = null;

        if (m_effectBindPointCache.ContainsKey(effectData.ParentName) && m_effectBindPointCache[effectData.ParentName] != null)
        {
            effectParentObj = m_effectBindPointCache[effectData.ParentName];
        }
        if (effectParentObj != null)
        {
            AddEffect(effectParentObj, effectData, delPlayEffect, param);
        }
        else
        {
            if (m_BaseEffectBindPoint != null)
            {
                AddEffect(m_BaseEffectBindPoint.gameObject, effectData, delPlayEffect, param);
            }
            else
            {
                LogModule.ErrorLog("find bind point failed!, id {0} bindPoint {1}", effectData.EffectID, effectData.ParentName);
            }
        }
    }
예제 #4
0
    public void PlaySceneEffect(int effectID, PlayEffectDelegate delPlayEffect = null, object param = null)
    {
        gameObject.SetActive(true);

        if (m_SceneEffecLogic)
        {
            m_SceneEffecLogic.PlayEffect(effectID, delPlayEffect, param);
        }
    }
예제 #5
0
 //目前UI特效直接挂在指定gameobj上面
 protected override void LoadEffect(Tab_Effect effectData, PlayEffectDelegate delPlayEffect, object param)
 {
     if (effectData == null)
     {
         return;
     }
     if (m_EffectGameObj != null)
     {
         AddEffect(m_EffectGameObj, effectData, delPlayEffect, param);
     }
 }
 protected override void LoadEffect(Tab_Effect effectData, PlayEffectDelegate delPlayEffect, object param)
 {
     if (effectData == null)
     {
         return;
     }
     if (m_BaseEffectBindPoint != null)
     {
         AddEffect(m_BaseEffectBindPoint.gameObject, effectData, delPlayEffect, param);
     }
 }
    public void PlayEffect(int effectID, PlayEffectDelegate delPlayEffect = null, object param = null)
    {
        if (!m_hasInited)
        {
        }
        Tab_Effect EffectInfo = TableManager.GetEffectByID(effectID, 0);

        if (EffectInfo == null)
        {
            if (null != delPlayEffect)
            {
                delPlayEffect(null, param);
            }
            return;
        }
        if (!DoPlayEffectWhenModelInvisible && !EffectHolderVisible && EffectInfo.Duration > 0)
        {
            return;
        }
        //设置了 取消技能特效 且满足条件
        if (EffectInfo.IsCanHide && !PlayerPreferenceData.SystemSkillEffectEnable)  //&& IsCanHideEffectObj)  这个 永远 返回 false ....
        {
            return;
        }
        ///特效持有者对象为空时 不处理 回调null
        if (m_EffectGameObj == null)
        {
            LogModule.WarningLog("effect can not play before init");
            if (null != delPlayEffect)
            {
                delPlayEffect(null, param);
            }
            return;
        }
        //加个数量限制
        //如果表格配置为-1则不限制,此时不用判断数量
        if (EffectInfo.MaxOwnNum >= 0 && GetEffectCountById(effectID) >= EffectInfo.MaxOwnNum)
        {
            return;
        }

        LoadEffect(EffectInfo, delPlayEffect, param);

        // 高能预警!!高能预警!!高能预警!!高能预警!!高能预警!!高能预警!!高能预警!!高能预警!!
        // 要开始挖坑了!!!	坑////////坑////////坑////////坑////////坑////////坑/////
        // 高能预警!!高能预警!!高能预警!!高能预警!!高能预警!!高能预警!!高能预警!!高能预警!!
//		if (GlobeVar.PLAYERLEVELUPEFFECTID == effectID)
//		{
//			UIManager.HideAllUIWhenLevelUp();
//		}
    }
    /// <summary>
    ///
    /// </summary>
    /// <param name="parentObj"></param>
    /// <param name="effectData"></param>
    /// <param name="delPlayEffect"></param>
    /// <param name="param"></param>
    protected void AddEffect(GameObject parentObj, Tab_Effect effectData, PlayEffectDelegate delPlayEffect,
                             object param)
    {
        if (null == effectData)
        {
            LogModule.ErrorLog("effectData is null");
            if (null != delPlayEffect)
            {
                delPlayEffect(null, param);
            }
            return;
        }
        ChangeMaterialColor(effectData.Type);

        //已经存在 数量加1
        if (m_EffectCountCache.ContainsKey(effectData.EffectID))
        {
            m_EffectCountCache[effectData.EffectID] = m_EffectCountCache[effectData.EffectID] + 1;
        }
        //不存在 添加进去 数量为1
        else
        {
            m_EffectCountCache.Add(effectData.EffectID, 1);
        }

        if (effectData.IsOnlyDeactive && m_dicEffectCache.ContainsKey(effectData.EffectID) && m_dicEffectCache[effectData.EffectID].Count > 0)
        {
            FXController curFXController = m_dicEffectCache[effectData.EffectID][0];
            m_dicEffectCache[effectData.EffectID].RemoveAt(0);
            if (curFXController)
            {
                //区域特效单独处理
                if (effectData.Type == (int)EEffectChangeType.TYPE_TARGETAREA)
                {
                    Games.SkillModle.SkillCore.SkillTargetData targetData = param as Games.SkillModle.SkillCore.SkillTargetData;
                    if (targetData != null)
                    {
                        if (targetData._hasSet)
                        {
                            curFXController.ChangePositionForAreaEffect(GetTargetAreaPos(targetData, curFXController.GetPosition()));
                        }
                        else
                        {
                            curFXController.ResetAreaEffect();
                        }
                    }
                }
                curFXController.Play(this);
            }

            if (null != delPlayEffect)
            {
                delPlayEffect(curFXController.m_FirstChild, param);
            }
            return;
        }

        AddEffectData curData = new AddEffectData(parentObj, effectData, delPlayEffect, param);

        m_NeedPlayEffectIdCacheList.Add(effectData.EffectID);
        //凑活的方式 如果 该粒子没有在
        GameObject resObj = ResourceManager.LoadResource(effectData.Path) as GameObject;

        if (null != resObj)
        {
            LoadEffectComplete(new LoadedObjData()
            {
                LoadedObj = resObj
            }, curData);
            return;
        }

        BundleManager.LoadEffectInQueue(effectData.EffectID, LoadEffectComplete, curData);
    }
 protected abstract void LoadEffect(Tab_Effect effectData, PlayEffectDelegate delPlayEffect, object param);