【Unity】フェードつき文字送り
フェードで文字表示 pic.twitter.com/OgozmHdjPm
— enu@遊宴雀2 雀-17 (@_enu) 2019年7月23日
packge
コード
- 本文用の
Text
コンポーネントを作成する。- 本文用のオブジェクトに
FadeInQuadByQuad
をアタッチする
- 本文用のオブジェクトに
- ルビ用の
Text
コンポーネントを作成する- ルビ用のオブジェクトに
RubyText
をアタッチする。RubyText
は↑の本文用オブジェクトを参照しておく。
- ルビ用のオブジェクトに
TypingEffect
をアタッチする
- ルビ用のオブジェクトに
- 二つのオブジェクトのrectは一致させておく。(ルビと本文は親子関係ににしとくのが自然でしょう)
- コード実行
[SerializeField] RubyText ruby; [SerializeField] Text body; [SerializeField] TypingEffect rubyTypingEffect; [SerializeField] QuadByQuad bodyTypingEffect; IEnumerator Start() { var message = "{吾輩:わがはい}は猫である。<color=red>名前はまだ無い</color>。\nどこで生れたかとんと{見<color=red>当:けんとう}がつか</color>ぬ。何でも薄暗いじめじめした所で<color=red>ニャーニャー</color>泣いていた事だけは記憶している。"; var stringWithRuby = StringWithRuby.Parse(message) .FoldTag() .WrapWithHyphenation(body, new HyphenationJpns.Ruler()) .UnfoldTag(); var typingEffect = new RubyTextTypingEffect(stringWithRuby, ruby, body, rubyTypingEffect, bodyTypingEffect); var startedTime = Time.time; while (true) { var elapsedTime = Time.time - startedTime; typingEffect.Update(elapsedTime); if (elapsedTime > typingEffect.duration) { break; } yield return null; } }