Exemple #1
0
        public void DestroyAllFx()
        {
            Fx fx = null;

            for (int i = 0; i < FxList.Count; i++)
            {
                fx = FxList[i];
                for (int j = 0; j < Fx.sMaxScaleInfoCount; j++)
                {
                    fx.ParticleArray[j]        = null;
                    fx.AnimationObjectArray[j] = null;
                    fx.ParticleCount           = 0;
                }

                fx.RootParticle    = null;
                fx.BindTarget      = null;
                fx.ParentTransform = null;

                GameObject.Destroy(fx.Instance);
                fx.Instance = null;
                fx          = null;
            }

            FxList.Clear();
        }
Exemple #2
0
 public override void SetFxList()
 {
     base.SetFxList();
     FxList.Add(new FxItem(BeatRepeat.DisplayName, BeatRepeat, typeof(FxBeatRepeatView)));
     FxList.Add(new FxItem(BeatShift.DisplayName, BeatShift, typeof(FxBeatShiftView)));
     FxList.Add(new FxItem(BeatScatter.DisplayName, BeatScatter, typeof(FxBeatScatterView)));
     FxList.Add(new FxItem(VinylFlick.DisplayName, VinylFlick, typeof(FxVinylFlickView)));
 }
Exemple #3
0
 void OnDestroy()
 {
     for (int i = 0; i < FxList.Count; i++)
     {
         var obj = FxList[i];
         GameObject.Destroy(obj);
     }
     FxList.Clear();
 }
Exemple #4
0
 private void Awake()
 {
     MaxFxCount = Mathf.Clamp(MaxFxCount, 3, 5);
     for (int i = 0; i < MaxFxCount; i++)
     {
         ParticleSystemUIComponent newObj = GameObject.Instantiate(Fx, this.transform);
         newObj.gameObject.CustomSetActive(true);
         DisableFx(newObj);
         FxList.Add(newObj);
     }
 }
Exemple #5
0
        /// <summary>
        /// 创建一个特效对象.
        /// </summary>
        /// <returns>特效对象.</returns>
        /// <param name="fxName">特效的名字.</param>
        public Fx CreateFx(string fxName)
        {
            if (fxName == "")
            {
                return(null);
            }

            //先从池中找未使用的特效-
            Fx fx = null;

            for (int i = 0; i < FxList.Count; i++)
            {
                fx = FxList[i];
                if (fx.Instance && fx.Instance.name == fxName && !fx.IsUsed && !fx.IsClosing)
                {
                    fx.IsUsed = true;

                    if (fx.RootParticle)
                    {
                        fx.RootParticle.time = 0.0f;
                    }

                    fx.Play(false);
                    fx.RootParticle.Clear();

                    return(fx);
                }
            }

            Fx newFx = new Fx();

            newFx.Instance = new GameObject("Fx_" + fxName);
            ParticleSystem ps = newFx.Instance.AddComponent <ParticleSystem>();

            ps.GetComponent <Renderer>().enabled = false;
            //newFx.Instance = ysResManager.Instance().GetEffectPrefab(fxName);
            newFx.Instance.SetActive(true);
            //ysFixShaderTool.ResetShader(newFx.Instance);
            newFx.Instance.name = fxName;
            newFx.RootParticle  = newFx.Instance.GetComponent <ParticleSystem>();
            newFx.IsUsed        = true;

            FxList.Add(newFx);

            newFx.Instance.transform.parent        = this.transform;
            newFx.Instance.transform.localPosition = Vector3.zero;
            newFx.Instance.transform.localRotation = Quaternion.identity;
            newFx.Instance.transform.localScale    = Vector3.one;
            newFx.ParentTransform = this.transform;
            newFx.Play(false);

            return(newFx);
        }