【Unity】【C#】【JavaScript】4.6.x の Canvas~UI Text のテキストをコードで変更する 
2014/12/31 Wed [edit]
持っている資料が古いのか、Ver 4.6.x 以降は GUI Text ではなく、Canvas に入れ子になっている UI Text を使う仕様になっていたので、GuiText のプロパティにテキストを設定する方法ではなくなっていた。ネット上にあるサンプルもレガシーのやり方ばかりなので、イマイチ良い資料がない。というわけで適当にやってみたら、上手くいったコード。

例えば画像のように、Canvas の中に、msg、itemCount、time (それぞれ GameObject - UI - Text で作ったもの)があった場合、
●C#
//宣言部 - 追加
using UnityEngine.UI;
//メインコード部
Text msg = GameObject.Find("Canvas/msg").GetComponent<Text>();
msg.color = Color.red;
msg.text = "COMPLETE!";
Text item = GameObject.Find("Canvas/itemCount").GetComponent<Text>();
item.color = Color.blue;
item.text = "ITEM: " + count; //variable
Text time = GameObject.Find("Canvas/time").GetComponent<Text>();
time.text = "TIME: " + Mathf.Floor(Time.time);
●JavaScript
//宣言部 - #pragma strict のすぐ下あたりに追加
import UnityEngine.UI;
//メインコード部
var msg : Text = GameObject.Find("Canvas/msg").GetComponent("Text") as Text;
msg.color = Color.red;
msg.text = "COMPLETE!";
var item : Text = GameObject.Find("Canvas/itemCount").GetComponent("Text") as Text;
item.color = Color.blue;
item.text = "ITEM: " + count; //variable
var time : Text = GameObject.Find("Canvas/time").GetComponent("Text") as Text;
time.text = "TIME: " + Mathf.Floor(Time.time);
のように書けば、テキストの内容や色などを変更できた。Rich Text として使えばタグも使えるみたいだし、そのうち色々実験してみようかな…。
Unity ももうすぐ5になりそうだし、進化するのは良いけど、仕様がどんどん変わっていくのは、過去のコードが参考にならないのが辛いね。
AndEngine なんかも使ってみたけど、メインエンジンのコードの仕様などもどんどん変わっているので、1年以内の資料でも参考にならなかった。cocos2d なんかもバージョンごとに NDK や make などのバージョンも合わせないと上手くいかないしね。Android SDK なんかはわりと古いものも使えるんだけどね。できればフレームワークは上位互換で作って欲しいものだね。でないと最新コード以外どんどん使えなくなる。バージョン変わるたびに書き直すのではフレームワークの意味がないしね。
(関連記事)
【Unity】【C#】uGUI ドロップダウンの要素をコードで設定と取得、外観のカスタマイズなど
【Unity】【C#】【JavaScript】GUIText をコードで生成する
- 関連記事
トラックバック
トラックバックURL
→http://fantom1x.blog130.fc2.com/tb.php/158-9f060317
この記事にトラックバックする(FC2ブログユーザー)
| h o m e |