今回はUnity2Dゲームで「テキスト文字を1文字づつ表示する」をDOTweenを利用して実装していきます。メッセージダイアログとかにも使える感じです。
はじめに
Unityのバージョンは2021.3.14f1です。
まずはDOTWeenのアセットを追加します。下記記事にてDOTweenの追加方法を書いてます。
実装開始
見た目を簡単に作成した後に、スクリプトで実装していきます。
UI作成
「UI」→「Legacy」→「Text」を追加します。
位置やサイズなどを変更してテキストの中身を空にしておきます。
スクリプト作成
下記スクリプトを作成します。3秒かけて指定した文字を表示しています。
using UnityEngine; using DG.Tweening; using UnityEngine.UI; public class textmanager : MonoBehaviour { [SerializeField] private Text _text; private void Start() { _text.DOText("SAMPLE TEXT", 3); } }
スクリプトを追加して、パラメータをセットします。今回はカメラにスクリプトを追加しています。
試しに実行すると下記のような感じになります。
スクリプトを変更
文字を表示するスピードを一定間隔にするため、「.SetEase(Ease.Linear)」を追記します。
using UnityEngine; using DG.Tweening; using UnityEngine.UI; public class textmanager : MonoBehaviour { [SerializeField] private Text _text; private void Start() { _text.DOText("SAMPLE TEXT", 3).SetEase(Ease.Linear); } }
「DOtext」の各パラメータは下記のような感じです。
Text.DOText(string endValue // 表示する文字列 ,float duration // 表示にかかる時間 ,[bool richTextEnabled=true] // リッチテキストが有効か無効か ,[ScrambleMode scrambleMode=ScrambleMode.None] // 文字表示されていない場所にランダム文字表示 ,[string scrambleChars=null]) // ランダム文字表示で指定する文字
ScrambleModeは下記の中から指定します。Custom時はパラメータをセットします。
- None : 文字を表示しない
- All : A-Z,a-z,0-9の中からランダムで表示
- Uppercase : A-Zの中からランダムで表示
- Lowercase : a-zの中からランダムで表示
- Numerals : 0-9の中からランダムで表示
- Custom : 指定した文字からランダム表示
下記のようにセットすると「文字を斜めに表示、まだ文字が表示されていない場所にはランダム文字を表示」します。
using UnityEngine; using DG.Tweening; using UnityEngine.UI; public class textmanager : MonoBehaviour { [SerializeField] private Text _text; private void Start() { _text.DOText("<i>SAMPLE TEXT</i>", 3, true, ScrambleMode.All).SetEase(Ease.Linear); } }
実行してみると、下記のような動きになります。