もくじ
C#スクリプトの作成
ソフトウェアのバージョンは以下の通りです。
- Unity 2021.1.20f1
- TextMesh Pro 3.0.6
C#スクリプトでTextMesh Proのテキストを操作してみたいと思います。簡単な例として画面クリックで数字をカウントアップするデモを作ります。
まずはTextMesh ProのTextゲームオブジェクトをCount Textという名前で作成します。これをカウントアップさせる数字とします。適当にテキストのサイズや色を設定します。よくわかるようにテキストサイズを大きめに変更しシーンの中心に配置します。( 2.1)
次にC#スクリプトを作成します。Assetsフォルダ配下にScriptsフォルダを作成し、CountUpという名前で新規にC#スクリプトファイルを作成します。( 2.2)
そしてCount Textに作成したCountUpスクリプトをアタッチし、CountUpスクリプトをダブルクリックして既定のエディタで開きます。( 2.3)
CountUpスクリプトの主なポイントと全体のコードは以下となります。
-
TextMesh ProのNamespaceを追加します。
using TMPro;
-
TextMeshProUGUI参照用の変数を宣言します。
TextMeshProUGUI countText;
-
Startメソッド内でGetComponentを使いTextMeshProUGUIを参照させます。
countText = GetComponent<TextMeshProUGUI>();
-
Updateメソッド内にTextMesh Proのテキスト書き替えの処理を書きます。
countText.text = count.ToString();
// CountUp.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro; // ----- (1)
public class CountUp : MonoBehaviour
{
TextMeshProUGUI countText; // ----- (2)
int count = 0;
private void Start()
{
countText = GetComponent<TextMeshProUGUI>(); // ----- (3)
countText.text = count.ToString();
}
private void Update()
{
if (Input.GetMouseButtonDown(0))
{
count++;
countText.text = count.ToString(); // ----- (4)
}
}
}
テキストにグラデーションを付けてみましたが、実行すると以下のビデオのような感じになります。( 2.4)
2.4 C# Script - TextMesh Pro
グラデーションはColor GradientにチェックをしてColor Modeでグラデーションのタイプを選択してカラーを設定することができます。( 2.5)
2.5 Color Gradient - TextMesh Pro
Visual Scriptingグラフの作成
さらに先ほどのC#スクリプトで実装した処理をVisual Scriptingのグラフで作成してみたいと思います。
最初にTextMesh ProをVisual Scriptingで使用するための設定をします。Unity Editorの上部メニューからEdit → Project Settings...をクリックし、Project Settingsウィンドウを表示させ、左ペインからVisual Scriptingを選択します。( 2.6, 2.7)
Node Libraryを開き「+」ボタンをクリックして「Unity.TextMeshPro」を追加し、「Regenerate Units」ボタンをクリックします。Regenerate Units Completedというポップアップウィンドウが表示されたら「OK」ボタンをクリックします。( 2.8, 2.9)
先ほどCount Textゲームオブジェクトに追加したCountUpスクリプトコンポーネントは不要なためチェックを外して無効化しておきます。( 2.10)
2.10 Inactive C# Script Component
Count TextゲームオブジェクトにScript Machineコンポーネントを追加します。( 2.11)
今回はSourceをメニューからEmbedにしておきます。「Edit Graph」をクリックし、Script Graphウィンドウを表示させます。( 2.12)
Script GraphウィンドウのBlackboardパネルでカウント用の変数を定義します。ここではGraph Variablesとしてint型のcount変数を作成します。変数名にcountと入力し「+」をクリックし追加します。Typeメニューより「Integer」を選択します。( 2.13, 2.14)
Script GraphウィンドウでText Mesh Pro UGUIのSet Textユニットを追加し、Start Eventと繋ぎます。次に先ほど定義したcount変数をドラッグ&ドロップでグラフウィンドウに追加しInteger To Stringユニットを間に挟んでSet Textユニットと繋ぎます。( 2.15)
同様にUpdate Eventからユニットを繋いでいきますが、画面をマウスでクリックする度にcount変数をインクリメントする処理を入れてTextMesh Proのテキストを更新します。( 2.16)
ゲームプレイボタンをクリックし、Visual Scriptingで実装した処理を実行します。Visual Scriptingの利点の一つとしてはScript Graphウィンドウに見られるように視覚的にプログラムのプロセスが見えることです。( 2.17)
2.17 Visual Scripting - TextMesh Pro
以上、簡単ですが、TextMesh ProのテキストをC#スクリプトもしくはVisual Scriptingで操作する方法を実践してみました。本記事ではTextMesh Proのtextプロパティの変更のみを操作しましたがそれ以外の要素についても変更可能です。変更可能なプロパティについては参考URLのScripting APIの情報を参照してください。( 参考URL: #6 and #9)
次はTextMesh Proのテキストの見た目をマテリアルシェーダーやテクスチャの設定を変更してもう少し凝ったデザインにしてみたいと思います。
Photo by Juan Camilo on Unsplash