Beispiel #1
0
    public void PlayFX()
    {
        if (playingStage == _STAGE.PLAYING)
        {
            return;
        }

        playingStage = _STAGE.PLAYING;
        playingTime  = 0;

        // Particles
        foreach (var data in particleDataArray)
        {
            data.Reset(true);
            if (data.beginTime == 0)
            {
                data.Play();
            }
        }

        // Animations
        foreach (var data in particleSystemDataArray)
        {
            data.Reset(true);
            if (data.beginTime == 0)
            {
                data.Play();
            }
        }

        // Animations
        foreach (var data in animationDataArray)
        {
            data.Reset(true);
            if (data.beginTime == 0)
            {
                data.Play();
            }
        }

        foreach (var data in trailRendererDataArray)
        {
            data.Reset(true);
            if (data.beginTime == 0)
            {
                data.Play();
            }
        }

        //Debug.Log( "Play FXController: name=" + gameObject.name );
    }
Beispiel #2
0
    public void StopFX()
    {
        // Pfx is stopped.
        if (playingStage != _STAGE.PLAYING)
        {
            return;
        }

        playingStage     = _STAGE.STOPPING;
        fadingRemainTime = fadeDelay;

        StopFXData();

        //Debug.Log( "Stop FXController: name=" + gameObject.name );
    }
Beispiel #3
0
    // Update is called once per frame
    private void LateUpdate()
    {
        // Pfx is stopped.
        if (playingStage == _STAGE.STOPPED)
        {
            return;
        }

        // Update FX stage.
        if (playingStage == _STAGE.PLAYING)
        {
            // Update FX played time.
            playingTime += Time.deltaTime;

            UpdateMovement();
            UpdateFX();

            if (playingTime > life)
            {
                if (loop)
                {
                    // life > 0 means this FX has recycle duration
                    if (life > 0)
                    {
                        StopFXData();
                        ResetFX(false);
                        playingTime -= life;
                    }
                }
                else
                {
                    StopFX();
                }
            }
        }
        else if (playingStage == _STAGE.STOPPING)
        {
            // Update fading time.
            fadingRemainTime -= Time.deltaTime;

            // Life is end.
            if (destroyMode == _DESTROY_MODE.FADE)
            {
                FadeOut(fadingRemainTime);

                if (fadingRemainTime <= 0)
                {
                    // Mark flag.
                    playingStage = _STAGE.STOPPED;
                }
            }
            else if (destroyMode == _DESTROY_MODE.PARTICLE_DISAPPEAR)
            {
                if (IsDead())
                {
                    // Mark flag.
                    playingStage = _STAGE.STOPPED;
                }
            }
            else // Error process.
            {
                // Mark flag.
                playingStage = _STAGE.STOPPED;
            }

            // Process stopped stage.
            if (playingStage == _STAGE.STOPPED)
            {
                playingTime = 0;

                // Call back.
                if (onFXFinishDels != null)
                {
                    foreach (var delData in onFXFinishDels)
                    {
                        if (delData.del != null)
                        {
                            delData.del(delData.userData);
                        }
                    }
                }

                // Destroy self.
                if (autoDestroy)
                {
                    DestroyFX();
                }
            }
        }

        UpdateFxScale();
    }
Beispiel #4
0
    public void PlayFX()
    {
        if (playingStage == _STAGE.PLAYING)
        {
            return;
        }

        playingStage = _STAGE.PLAYING;
        playingTime  = 0;

        // Particles
        foreach (var data in particleDataArray)
        {
            data.Reset(true);
            if (data.beginTime == 0)
            {
                data.Play();
            }
        }

        // Animations
        foreach (var data in particleSystemDataArray)
        {
            data.Reset(true);
            if (data.beginTime == 0)
            {
                data.Play();
            }
        }

        // Animations
        foreach (var data in animationDataArray)
        {
            data.Reset(true);
            if (data.beginTime == 0)
            {
                data.Play();
            }
        }

        foreach (var data in trailRendererDataArray)
        {
            data.Reset(true);
            if (data.beginTime == 0)
            {
                data.Play();
            }
        }

        //判断是否需要播放音效  如果不开音效 就不需要进行这些操作  提高一点效率
        //通过GameStateMachineManager.Instance判断是否在游戏中。美术单纯看特效时一般不在游戏中,没有初始化 AudioManager
        //if (GameStateMachineManager.Instance != null && AudioManager.Instance.NeedPlaySound)
        if (FxStaticGameplayCaller != null && FxStaticGameplayCaller.SuitForPlaySound())
        {
            foreach (var data in soundFxDataArray)
            {
                data.Reset(true);
                data.fxController = this;
                if (data.beginTime == 0)
                {
                    data.Play();
                }
            }
        }

        foreach (var data in cameraFxDataArray)
        {
            data.Reset(true);
            data.fxController = this;
            if (data.beginTime == 0)
            {
                data.Play();
            }
        }

        //Debug.Log( "Play FXController: name=" + gameObject.name );
    }