public override void Update(float currTime, ISpecialEffectContext context, bool force = false) { //未初始化成功则不更新 if (effInst == null) { return; } if (speAnimClip.IsKilled && !force) {//若特效被杀死 if (!_OnKilled()) { return; } } float localTime = _Trans2LocalTime(currTime); if (_IsInPlayTimeInterval(currTime)) { //在播放区间内对特效进行启用播放 if (!effInst.gameObject.activeInHierarchy) { //在播放区间内特效一定是启动的 effInst.gameObject.SetActive(true); } if (force) {//强制同步当前播放时间 effInst.CurrPlayTime = localTime; } if (isPlaying != speAnimClip.IsPlaying) {//同步播放状态 if (speAnimClip.IsPlaying) { effInst.CurrPlayTime = localTime; effInst.Play(); isPlaying = true; } else { effInst.Pause(); isPlaying = false; } } } else //对于区间外的特效进行停止处理 { if (isPlaying) { effInst.Stop(); isPlaying = false; } if (effInst.gameObject.activeInHierarchy) { effInst.gameObject.SetActive(false); } } }
protected override void _UpdateSpeedScale(float scale) { ISpecialEffectContext context = SpeAnimClip.Context; if (context == null || audioClip == null) { return; } context.SetSpeedScale(SpeAnimClip.gameObject, audioClip, scale); }
public override void Stop() { ISpecialEffectContext context = SpeAnimClip.Context; if (context == null || audioClip == null) { return; } context.Stop(SpeAnimClip.gameObject, audioClip); isPlaying = false; }
public virtual void Update(float currTime, ISpecialEffectContext context, bool force = false) { }
public override void Update(float currTime, ISpecialEffectContext context, bool force = false) { if (context == null || audioClip == null) { return; } if (speAnimClip.IsKilled && !force) {//若特效被杀死 if (!_OnKilled()) { return; } } float localTime = _Trans2LocalTime(currTime); #if UNITY_EDITOR if (Application.isPlaying) { #endif if (_IsInPlayTimeInterval(currTime)) { //在播放区间内对特效进行启用播放 if (isPlaying != SpeAnimClip.IsPlaying) { if (SpeAnimClip.IsPlaying) { context.Play(SpeAnimClip.gameObject, audioClip, localTime); isPlaying = true; } else { context.Pause(SpeAnimClip.gameObject, audioClip); isPlaying = false; } } } else { //对于区间外的特效进行停止处理 if (isPlaying) { context.Stop(SpeAnimClip.gameObject, audioClip); isPlaying = false; } } #if UNITY_EDITOR } else { //非播放模式下 if (localTime > 0.0f && localTime <= Length) { //在播放区间内对特效进行启用播放 if (!isAudioPlayed) { context.Play(SpeAnimClip.gameObject, audioClip, localTime); isAudioPlayed = true; } } else { if (isAudioPlayed) { context.Stop(SpeAnimClip.gameObject, audioClip); isAudioPlayed = false; } } } #endif }