HOME » » » » HERE

[Unity]TextMeshProを動的に変更! | 【ゆにすち! - 入門編】(part.014)

access_time

update

ゆにすち(この画像は、https://www.pakutaso.com/さまから借用しています)

こんにちわ、横浜すみっこクリエイターととです。
『UnityでSTEAM販売を目指す!』略して『ゆにすち!』の【入門編】です!
この【入門編】では、3Dゲーム開発プラットフォームである[Unity]の導入と、その基本操作を学習していきます。

今回は、[Unity]のTextMeshPro(以下、「TMP」といいます)をスクリプトから動的に変更してみたいと思います!

『ゆにすち!』シリーズ

このシリーズでは『UnityでSTEAM販売を目指す!』略して『ゆにすち!』と銘打ち、プログラムもモデリングも企画も販売も何から何までぜ~んぶド素人のととが、PCゲームを考え、制作して、販売するまでの風景を履歴として残していくものです。短い連載を重ねる形で発信していければと良いな、と思っております。
この【入門編】では、3Dゲーム開発プラットフォームである[Unity]の導入・基本操作を学んでいきます。

この記事のポイント!

  • スクリプトを生成する!
  • スクリプトをTextMeshProオブジェクトにアタッチする!
  • スクリプトで、コンポーネントを取得して、テキスト情報を上書きする!

スクリプトからTextMeshProを動的に変更!

変更したいTMPを用意

前回までの記事を参考に、TMPオブジェクトを用意しておきます。

ゆにすち(あらかじめTMPを用意しておきます)

今回は、画面中央に「この表示を更新」という文字列を表示させています。

スクリプトをTMPにアタッチ

まずは、スクリプトを生成します。

ゆにすち(スクリプトを生成します)

上図のように、《プロジェクトウィンドウ》の+マークからC#スクリプトをクリックします。

ゆにすち(任意の名前にリネームします)

《プロジェクトウィンドウ》内に、スクリプトが生成されます。今回は「TmpChanger」というファイル名称にリネームしておきました。
そのままでもかまいませんが、わかりやすいようにリネームしました。

ゆにすち(TMPにスクリプトをアタッチします)

次に、スクリプトをTMPオブジェクトにドラック&ドロップでアタッチ(紐づけ)します。

ゆにすち(コンポーネントとして追加されました)

TMPを触った状態で《インスペクターウィンドウ》を見ると、「Tmp Changer(スクリプト)」コンポーネントが追加されているのがわかります。

ソースコードの編集

ソースコードを編集するには、《プロジェクトウィンドウ》から「TmpChanger.cs」をダブルクリックします。[VSCode]が起動して、ソースコードの編集画面が表示されます。

ゆにすち(ソースコードを書き換えます)

ソースコードを上図のように追加します。追記した内容を1行ずつ確認していきましょう。

1. using TMPro;
2. private TextMesh ProUGUI tmp;
3. tmp = this.GetComponent<TextMeshProGUI>();
4. Debug.Log(tmp.text);
5. tmp.text = "書き換わりました";
6. Debug.Log(tmp.text);

①は、TMP関連を記述する合図のようなものです。この「using」を追記することによって使用できるコードが増えます。

②で、コンポーネントを取得するための変数(入れ物)を準備しています。
「private」は、このソースコード内だけで使用しますよ、という意味です。他のファイルから見つけることはできなくなります。
「TextMeshProUGUI」は、変数の種類(型)を示していて、変数に入れられる内容を決めています。今回は「TextMeshProUGUI」型としているので、変数に入れられるのは、同じ「TextMeshProUGUI」型のコンポーネントだけになります。
「tmp」が変数名です。ここは任意のもので構いません。

③で、TMPオブジェクトから、<>で指定したコンポーネントを取得します。ここでは<TextMeshProUGUI>としていますので、「TextMeshPro - Text(UI)」コンポーネントを取得して、変数「tmp」に格納することになります。
ちなみにスクリプトを直接オブジェクトにアタッチしている場合、「this.」は省略可能です。今回も省略しても問題ありません。
nullチェックが必要なのかは不明です。。。

④は、TMPコンポーネントのテキスト情報(つまり入力した文字列)を《コンソールウィンドウ》に表示するよう指示をしています。コードは上から順に解釈されていくので、この時点では「この表示を更新」が表示されるはずです。

⑤は、TMPコンポーネントのテキスト情報に「書き換わりました」の文字列を上書きしています。プログラムでは「=(等号)」は、左右辺が等しいという意味ではなく、左辺に右辺を代入するという意味です。

⑥は、④とまったく同じコードですが、《コンソールウィンドウ》に表示されるものは別物になります。⑤で「tmp.text」の中身を上書きしてしまったためです。この時点では「書き換わりました」と表示されることになります。

実行結果の確認

[VSCode]から[Unity]に戻って、《ツールバー》内の実行ボタン(▷)をクリックします。

ゆにすち(書き換わりました)

《シーンビュー》を確認すると、文字列が「書き換わりました」に変わっていると思います。

ゆにすち(ログ出力されました)

つづいて《コンソールウィンドウ》を確認してみましょう。「この表示を更新」と「書き換わりました」の2つログが出力されていました。上から下へと新しくなります。期待通り表示できました。

まとめ

今回は、[Unity]でTMPの文字列変更をスクリプトから動的に変更してみました。今回初めてしっかりとスクリプトに触れることができました。

次回予告

[Unity]キーボード入力を受け付ける!
次回は、キーボードの入力を受けて、[Unity]側で反応できるようにしてみましょう!
では、今回はこの辺で。

コメント