[UI] 数値を文字に変換して、テキストとして表示する

記事作成 2019年6月
PlayMaker 1.9.0 / Unity 2018.2.6f1

こんな感じ。
これは、マウスの X座標を、スクリーン内の比率で表示しています。
左端 0 ~右端 1 。
このように、取得した数値をリアルタイムで文字変換、テキスト表示したい。

----------------------------------------------
まずテキストを用意。



適当な位置に置きます。


----------------------------------------------
インスペクタ上ではこう。Horizontal を Overflow にしておいてください。

----------------------------------------------
シーン上に、空のオブジェを作り、適当な名前をつけます。
例 「emp マウス取得」
[Get Mouse X]                 マウスのX値を取得し [フロート変数] に代入。
[Convert Float To Strings] [フロート変数] を文字列に変換し、[文字変数]に代入
[UI Text Set Text]      UI 「text」に [文字変数] の内容を設定

変数は前もって作成します。

[Convert Float To Strings] でのFormatについて
マウスX [ 00.0000 ]
これ、数字で表現しているところ(00.0000)に実際の数値が当てはめられ
他は結構自由です。

これだけで、はじめの動画のように動作します。
----------------------------------------------
----------------------------------------------
@ここからは、余力があれば。
先の場合、マウスのX値を取得したオブジェ(状態遷移)と変換、UI表示するオブジェ
が同じでしたが、それが別々ならどうするか。

「状態遷移」内の変数はローカルなので、取得したX値 [flo マウスX]
は別のオブジェ内の「状態遷移」では使えません。

この場合、オブジェクト間を超えて、プロジェクト全体で共通して使用できる
「グローバル変数」を作ります。
----------------------------------------------
別のオブジェ 「emp UI_text変更のみ」を作成し、文字変換とテキスト設定の
アクションをコピーします。
そして、変換する変数に「グローバル変数」を設定します。

グローバル変数」の設定の仕方
タブ「変数」を選択し、右上の歯車をクリックし


「グローバル変数」のウィンドウを開き、

マウスX値を格納する、グローバル変数を作ります。
以前にも書きましたが、変数名のはじめの、flo、等はわかりやすくするために
自分で付けています。g はグローバルという意味です。
----------------------------------------------
こっちは元の、「emp マウス取得」
マウスX値を格納する変数に、作成したグローバル変数を
設定します。

変換と文字設定のアクションは、削除するかチェックを外し、無効化します。

これで、「emp マウス取得」で、取得したマウスX値をグローバル変数
[g_flo マウスX] に代入し
「emp UI_text変更のみ」ではその[g_flo マウスX]を文字列に変換して
テキスト表示できます。

「emp UI_text変更のみ」
----------------------------------------------
おまけ
いつのバージョンからか、テキスト表示用に予め文字列に変換しなくても
UIアクション上の[Convert]で直接、数値を変換表示できるようにもなりました。

しかし、文字変数[String]のようなフォーマットは(いまのところ)使えないので
単純に数値のみの表示になります。




0 件のコメント:

コメントを投稿