【Unity】VisualScriptingチュートリアル4

toshizabeth.hatenablog.com

第4回

概要

前回と同じく

www.youtube.com

こちらの動画を参考としたチュートリアルコードを書いていきます


前準備

前回はキューブオブジェクトを動かし、カプセルオブジェクトに接触した際に頭上のオブジェクトのアクティブ/非アクティブを切り替えるVisualScriptを記述しました
今回は「カプセルオブジェクトに接触した際に画面にテキストメッセージを表示する」をやっていこうと思います


  1. Canvasを一つ作成
  2. Canvas配下にMessageBoxという名前のGameObjectを配置
  3. その下にTextMeshProのGameObjectを配置

f:id:toshizabeth:20210920130701p:plain

メッセージウィンドウのように配置

f:id:toshizabeth:20210920144717p:plain

配置した TextMeshPro では日本語に対応したフォントを取り付ける必要があります
今回は 以下のサイト様のフォントを使用することにしました

jikasei.me

画面下部のダウンロードからフォントをダウンロードし、中にあるいずれかの xx.ttf ファイルをUnityに配置→読み込ませる
Window > TextMeshPro > Font Asset Creator からフォントアトラスを生成する

RenderModeはSDFAAで CharacterSetはCustomCharactersで Generate Font Atlas > 保存

f:id:toshizabeth:20210920144752p:plain

生成したフォントアセットの GenerationSettings を開いて AtlasPopulationMode をDynamicに,そして ClearDyanmicData にチェックを入れておきましょう
Staticのままではパフォーマンスが良いが使用する文字を自分で登録しなければならないので面倒くさい。
Dynamicの場合は実行中にフォントテクスチャを生成してくれるので楽

f:id:toshizabeth:20210920144916p:plain

これでTextMeshProに作成したフォントを取り付けると日本語が表示できるようになったと思います

ScriptMachineを取り付ける

MessageBoxにScriptMachineコンポーネントを取り付けます。
今回は条件がいらないのでScriptMachine。

ScriptMachine上からテキストを書き換えるために TextMeshPro のオブジェクトをScriptMachineに教える必要があります
なので Variables コンポーネントに Messageという名前で TextMeshPro を登録しておきます

f:id:toshizabeth:20210920145202p:plain

Editor Graph を押して実際にテキストを配置していきます。


しかし、このまま 右クリック > Add Node から TextMeshPro を探しても出てきません
VisualScriptingに登録されていないコンポーネントを使用するためには、TextMeshPro コンポーネントをVisualScriptingに登録する必要があります

Edit > ProjectSettings > Visual Scripting を開いて Node Library > +ボタン で TextMeshPro の DLL を登録。

f:id:toshizabeth:20210920145656p:plain

次に Type Options > +ボタン で TextMeshPro UGUI を登録

f:id:toshizabeth:20210920145731p:plain

TextMeshProのDLLをまずは登録して、その中にある TextMeshPro UGUI を登録します。


これで下にある Regenerate Nodes を押すと VisualScriptingでTextMeshProが使用できるようになります


TextMeshProのテキストを設定するのに必要なのは TExtMeshProUGUISetText ユニット

f:id:toshizabeth:20210920145856p:plain

全体図はこんな感じ

f:id:toshizabeth:20210920145905p:plain


  1. OnStart と SetTextをつなげる
  2. GetVariable の Object から Vairables に登録した Message を取得
  3. MessageとSetTextをつなげる
  4. String ユニットを貼り付けて表示したいテキストを入力してSetTextと結びつける


以上で、実行するとVisualScriptingに配置したテキストがデフォルトで登録されてあってテキストを書き換えて表示されます
条件を入れていないため起動時に速攻書き換えて終わり。

f:id:toshizabeth:20210920150122g:plain