Unityでテキストメッシュプロのテキストをキー入力で切り替えるスクリプトを書いた!表示非表示を切り替えるスクリプトも

Unity

 

バーチャル3Dクリエイター神部まゆみです(*^-^*)

 

今日はUnityでテキストメッシュプロのテキストを切り替えるスクリプトを書いたよ。

あと、テキストメッシュプロのテキストの表示非表示を切り替えるスクリプトもね。

主に自分用だけど、誰かが参考にできるように公開しておく。

unity 2020.1.1で動作確認したよ。

————-PR———————-

現在、2021年の新作人気アセットが50%オフで買えるunityアセットリフレッシュセールをやってるみたいです(日本時間2021/10/02 PM15:59まで)。

unityアセットリフレッシュセール50% off

欲しいアセットはこの機会に買っておくと良いかも。

————————————-

 

テキストを書き換えるスクリプトと、テキストメッシュプロを書き換えるスクリプトは違うみたい

この前テキストを書き換えるスクリプトは先輩たちのページを参考にして作れたんだけど、それだとテキストメッシュプロで設定したテキストは書き換えられなかったんだよね。

そもそも別オブジェクトで型も違うみたいだからダメっぽい。

従来のテキスト書き換えスクリプト

こちらに書いたけど、テキストメッシュプロのスクリプトと比較できるからここにも一応貼っておくよ。

https://knb-mayumi.com/unitygui-galge2/#toc7

Text型のtitle変数を作って、Zキーが押されたらtitle.textで書き換えるシンプルな感じ。

一応使い方も

一応使い方を書いておくと、キャンバスを作ってそこにテキストを作っておいて、

空のオブジェクトを作成して(ここではSetTextって名前)スクリプトをアタッチして、キャンバスに作ったテキストオブジェクトをD&Dすれば使えるよ。

これでZキーを押されると、テキストが書き換わっていく感じ。

まぁ普通のテキストが表示できればいいのであれば、これを改変していけば事足りると思う。

詳しくはこのページに書いたから参考にしてね。

UnityのuGUIでテキストを表示してギャルゲーっぽいのを作ろう
バーチャル3Dクリエイターの神部まゆみです(*^-^*) 今日はUnityでuGUI?とかいう機能を使って、画面にテキストを表示するよ。 あのギャルゲーみたいな、下に半透明のウィンドウが出たりしてテキストが表示さ...

テキストメッシュプロのテキストをキー入力で切り替えるスクリプト

テキストとテキストメッシュプロで使い方が違うとは知らなかったから少し詰まっちゃったんだけど、こちらの頭のいい先輩のページを参考にしたらできたよ。

ありがとうございます(*^-^*)

https://unity-mantario.hatenablog.com/entry/2018/07/15/205727

なんとなく、キーを押したら青色になるようにしたよ。

動かしたところ

テキストはまぁノリで(笑)。

従来のテキスト書き換えとの違い

  • using TMProを宣言しておかないといけない
  • 型がTextMeshProUGUIになった

くらいかな。

多分指定できるパラメーターとかも違うんだろうけど、今のところ使う必要に迫られていないからわかりません。

使い方は、空のオブジェクトにアタッチして、テキストメッシュプロのオブジェクトをD&DすればOK

どのスクリプトもこんな感じだと思うけどね。

TextChangeっていう名前で空のオブジェクトを作って、スクリプトをアタッチして、テキストメッシュプロのオブジェクトをD&Dしたところ。

これで実行すればOK。

テキストメッシュプロは、日本語をデフォルトで使えないみたいなので注意

普通のテキストだと日本語も行けるんだけど、テキストメッシュプロはダメみたい。

フォントアセットとかいうのを作れば、日本語を表示できるようになるよ。

こちらで書いたから参考にしてね。

unityのテキストアウトラインがぼやけるから変更したい!日本語フォントを入れて調整する
バーチャル3Dクリエイター神部まゆみです(*^-^*) unityでテキストを入れていたら、なんかアウトラインがぼやけた感じになっちゃったから調整したよ。 同じところで悩んでる人は参考にしてね。 現状:ちょっとぼやけて...

まぁこんなページ見てる人は既に知ってる人が多いと思うけど、一応ね。

テキストメッシュプロのテキストをキー入力で表示非表示するスクリプト

Hキーが押されたらテキストメッシュプロのオブジェクトごとsetactiveで非表示にして、Aキーが押されたらsetactiveをtrueにして表示するようにしてあるよ。

HはHide、AはAppearみたいな感じで(笑)。

TextMP = GameObject.Find(“Text (TMP)”); の部分はテキストメッシュプロを作成した時のデフォルト名で指定してあるから、名前変えたら変更してね。

 

テキストメッシュプロのオブジェクトを取得すればいいだけみたいだから、型はGameObjectでいいみたい。

とりあえずこれで動いたから大丈夫だと思う。

動かしたところ

上で紹介したテキスト切り替えスクリプトと併用すると良い感じかも。

隠してる時にZキーを押してもpage変数がプラスされるので、表示させると次のテキストに移行するようです。

使い方は、空のオブジェクトにアタッチして、テキストメッシュプロのオブジェクトをD&DすればOK

まぁどのスクリプトも同じだね。

テキストメッシュプロのデフォルト名は、tと(の間に半角スペースがあるので注意!

テキストメッシュプロはデフォルト名が「Text (TMP)」なんだけど、tと(の間に半角スペースがあるみたい。

TextMP = GameObject.Find(“Text (TMP)”); の部分で半角スペースなしにしたら動きませんでした。

「半角スペースくらい、unityが考慮して上手くやってくれるでしょ」と思って実行してみたけどダメだったから、findは一字一句間違いなく指定しないとダメっぽい。

まぁコピペなら間違う心配はないけどね。

不安なら、TextMPとかにオブジェクトごとリネームして、コードを書き換えるのもいいかもね。

おわりに

とりあえず自分用に作ったやつだけど、調べれば案外書けるもんだね。

C言語とかPHPとかはやったことあるけど、C#はよく知らないからさ( ̄▽ ̄;)

 

まぁ参考にできるところがあれば参考にしてね。

 

タイトルとURLをコピーしました