public IEnumerator DisplayMonologue() { while (true) { if (MonologueQueue.Count > 0) { var monologue = MonologueQueue.Dequeue(); foreach (var item in monologue.Lines) { DOTweenAnimation anim = monologueText.gameObject.GetComponent <DOTweenAnimation>(); anim.DORestartAllById("Monologue_Start"); anim.DORestartAllById(item.effect.ToString()); monologueText.SetText(item.line); PlayerController.Instance.SetEmotion(item.emotion); yield return(new WaitForSeconds(item.duration)); anim.DORestartAllById("Monologue_End"); DOTween.Pause(gameObject); yield return(new WaitForSeconds(monologueText.DOFade(0, fadeOutDuration).Duration())); } } yield return(null); } }
static public IObservable <DOTweenAnimation> DORestartAllByIdAsObservable( this DOTweenAnimation animation, string id) { return(Observable.Create <DOTweenAnimation>(o => { animation.tween.OnComplete(() => { o.OnNext(animation); o.OnCompleted(); }); animation.DORestartAllById(id); return Disposable.Empty; })); }