public void LateUpdate()
 {
     if (isPlaying)
     {
         if (null != EffectList && EffectList.Count > 0)
         {
             int cout = EffectList.Count;
             for (int i = 0; i < cout; i++)
             {
                 StaticEffectNode nod = EffectList[i];
                 if (nod.effect)
                 {
                     if (nod.fllowBone)
                     {
                         nod.effectTransform.SetPosition(nod.fllowBone.position + nod.PosOffset);
                         Vector3 ang = nod.fllowBone.rotation.eulerAngles;
                         ang += nod.AngleOffset;
                         nod.effectTransform.rotation = Quaternion.Euler(ang);
                     }
                     else
                     {
                         Vector3 disPos = lastPos - m_Trans.position;
                         if (disPos.sqrMagnitude > 0.0001f)
                         {
                             nod.effectTransform.SetPosition(m_Trans.position);
                             lastPos = transform.position;
                         }
                         nod.effectTransform.rotation = m_Trans.rotation;
                     }
                 }
             }
         }
     }
 }
        public void Play(U3D_Render.EntityView ev)
        {
            if (!bInit)
            {
                return;
            }
            isPlaying = true;
            if (ev != null)
            {
                LastEv = ev;
            }

            if (null != EffectList && EffectList.Count > 0)
            {
                int cout = EffectList.Count;
                for (int i = 0; i < cout; i++)
                {
                    StaticEffectNode n = EffectList[i];
                    if (n.PlayTimes > 0)
                    {
                        currPlayTimesList[i]++;
                        if (currPlayTimesList[i] > n.PlayTimes)
                        {
                            continue;
                        }
                    }

                    if (n.effect)
                    {
                        n.effect.PlayEffect(false, LastEv == null ? -1 : LastEv.ID, null, null);
                    }
                }
            }
        }
 public void ResetLayer()
 {
     if (null != EffectList && EffectList.Count > 0)
     {
         int cout = EffectList.Count;
         for (int i = 0; i < cout; i++)
         {
             StaticEffectNode n = EffectList[i];
             if (n.effect)
             {
                 GameUtil.SetLayer(LayerMask.NameToLayer(Config.LayerLightingEffectOnly), n.effect.gameObject, true);
             }
         }
     }
 }
        void ResLoadCallBack(ResConfigData cof, ResNode res, System.Object UserDataObj)
        {
            StaticEffectNode n = UserDataObj as StaticEffectNode;

            if (n == null)
            {
                Debug.LogError("Effect_PlayEntityStaticEffect -- 重大bug");
                return;
            }
            n.res = res;
            if (null != n.res && n.res.IsValid())
            {
                n.effect = n.res.InstanceMainRes <Effect.EffectNode>();
                if (n.effect)
                {
                    n.effect.isStaticEffect = false;
                    n.effect.PlayOnAwake    = false;
                    n.effect.Init();
                    n.effect.transform.SetParent(LightingEffectFactory.Instance.StaticEffectRoot.transform);
                    n.effect.transform.SetPosition(transform.position);
                    n.effect.transform.rotation = transform.rotation;

                    lastPos = transform.position;
                    lastRot = transform.rotation;

                    n.effectTransform = n.effect.transform;
                    ResetLayer();

                    if (isPlaying)
                    {
                        Play(LastEv);
                    }
                }
                else
                {
                    Debug.LogWarning("Effect_PlayEntityStaticEffect有非特效结点,请[--策划--]检查皮肤预制体:" + transform.parent.name);
                }
            }
            else
            {
                Debug.LogWarning("Effect_PlayEntityStaticEffect有特效加载失败,原因可能是预制体为空或者预制体加载失败,请[--策划--]检查皮肤预制体:" + transform.parent.name);
            }
        }
 public void Stop()
 {
     if (!bInit || !isPlaying)
     {
         return;
     }
     isPlaying = false;
     if (null != EffectList && EffectList.Count > 0)
     {
         int cout = EffectList.Count;
         for (int i = 0; i < cout; i++)
         {
             StaticEffectNode n = EffectList[i];
             if (n.effect)
             {
                 n.effect.StopEffect();
             }
         }
     }
 }
 public void Init()
 {
     if (bInit)
     {
         return;
     }
     if (null != EffectList && EffectList.Count > 0)
     {
         isPlaying = false;
         Effect.EffectNode.ResigterEffectQualityChange(OnEffectQualityChange);
         int cout = EffectList.Count;
         for (int i = 0; i < cout; i++)
         {
             currPlayTimesList.Add(0);
             StaticEffectNode n = EffectList[i];
             n.res = AssetBundleManager.GetAssetsAsync(AssetType.Asset_Prefab, ResLoadCallBack, n.guid, true, n);
             if (null == n.res)
             {
                 Debug.LogWarning("Effect_PlayEntityStaticEffect有特效加载失败,原因可能是预制体为空或者预制体加载失败,请[--策划--]检查皮肤预制体:" + transform.parent.name);
             }
         }
     }
     bInit = true;
 }