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 ); }
public void StopFX() { // Pfx is stopped. if (playingStage != _STAGE.PLAYING) { return; } playingStage = _STAGE.STOPPING; fadingRemainTime = fadeDelay; StopFXData(); //Debug.Log( "Stop FXController: name=" + gameObject.name ); }
// 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(); }
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 ); }