俺に解るように説明する "Armory Engine" 入門+

ゲームエンジン Armory Engine (Armory3D) の使い方を手探りで学んで入門しようって感じかな。

P2.玉転がし.20「Canvas の Text にアクセスするぞー!」

f:id:ore2wakaru:20190210004557p:plain

前回 Set Property したプロパティーを今回は、Get Property して テキスト情報として Canvas(UI )に表示させる。もう書いてしまったが、Set したプロパパティーを Get するのは、Get Property ノードだ。分かりやすい。そして、Canvas にテキストデータを送り込むのが Canvas Set Text ノード。これも直感的に分かってしまうくらい分かりやすい。(Get Property / Canvas Set Text)

Set して Get

オブジェクトにプロパティーSet したら、今度はそれを利用するためには Get してこないといけない。これはほぼペアと言える組み合わせなので、Set Property ノードと Get Property ノードはペアで覚えよう。

f:id:ore2wakaru:20190209230246p:plain

 Get Property ノード: オブジェクトに埋め込まれたプロパティーを取り出す。(Value カテゴリ)

❶-1 この欄が空欄なのは、Set Property したオブジェクトが自分自身だろ。そこから取り出すんだから、ここも空欄な訳。(オブジェクト欄空欄=自分自身) もし他のオブジェクトに持たせたプロパティーをとってきたい場合は、空欄のヶ所をクリックしてリストから選択できる。

❶-2 ここに取り出したいプロパティー名を書き入れる。もりろん、"kuruNokori"。本当は、空欄クリックでリストが出て来て欲しいけど、まだ出ないようだなー。今後に期待か。手書きでもいいけど、間違わないようにコピペした方がイイね。すぐ横にあるし。

 Canvas Set Text ノード: Canvas にテキストデータを送る。(Canvas カテゴリ)

f:id:ore2wakaru:20190209232545p:plain

Canvas カテゴリは寂しいなー。2個しかないぞ。しかもテキスト情報を送るのと、位置を変えるのと2つしかない。ここも今後に期待かな? もっと増えて欲しいなノード。

❷-1 で、in ピン。これがあったら、どっかの out ピンから線がつながってないとダメだからね。意外と最初の時は「なんかこのノードの処理、行われてないんだよなー」ってのが起こる。ノードの in - out 赤ピン接続しっかり確認だ。

❷-2 Element: エレメントっていうのは、CanvasOutliner 上での名前だ。これも手打ちなんだなー、勝手に Canvas 調べてリストで出してくれれば楽なのにな。

f:id:ore2wakaru:20190209234421p:plain

Blender では Outliner にはオブジェクトが並ぶけど、CanvasOutliner のはオブジェクトとは言わずに、単にエレメントと呼んでるダケ。

❷-3 Text: エレメントが持ってる Text 項目(Name のすぐ下ね。前、"Hello World" っていれたとこ)。ここに表示させたい文字列を入れる。もちろん表示させたい情報は、"kuruNokori" の持っているデータ値(12)だろ。Get Property してきたヤツを繋げばいいよね。簡単だ。ただ、"kuruNokori" は整数値だから、微妙にストリングじゃないのが気になるが、Armory は勝手に変換してくれるみたいだぞ。便利だ。

ここまでで、

前回の分

ゲーム開始直後、
このスクリプトが付くオブジェクトの
プロパティー "kuruNokori" に
整数値の12がセットされる。
(kuruNokori = 12) 」

今回の分

セットされたプロパティー "kuruNokori" を取り出し (❶)
キャンバスのエレメントのテキストに送る (❷)

となる。分かったかな?

では確認してみよう

[▶ Play] すれば、"Hello Worlwd" と表示されていた部分に、"kuruNokori" が持ってる整数値 "12" が表示されるはずだが。



f:id:ore2wakaru:20190210000316p:plain

変わらねー。

そう変わらない。なぜなら、今作ったスクリプト "NodeCube" をオブジェクト Cube 君(UI コレクションに作ったあれね)につなげてないからだ。よくあるミス。

Cube 君に Node 用の Trait を追加し、リストから "NodeCube" を選択してオブジェクトノードトゥリースクリプト)を関連付けてくれ。

f:id:ore2wakaru:20190210001545p:plain

こういう事ね。

ここで分かるのは、一つのオブジェクトに複数個の Trait を付けることが出来るって事だ。だから、Armory Traits って複数形になってんだな。

/※ 「オブジェクト --- トレイト --- スクリプト」の関係、大事だぞ。 ※/

では再度確認してみよう

今度こそ、[▶ Play] すれば、"Hello Worlwd" と表示されていた部分に、"kuruNokori" が持ってる整数値 "12" が表示されるはずだが。



f:id:ore2wakaru:20190210002857p:plain

止まるー。

おいおい。どーした。で、こういう時は、例のボタン([Clean] ボタン)なんだが、これもダメのようだ。で、さらになんかの助けになるかもしれないので、メインメニューの Window > Toggle System Console でコンソールを出してみるんだが、

f:id:ore2wakaru:20190210003307p:plain

分かんねー。

ってことで、今日はここまで。次回解決する。

Armory もアルファの時はちゃんと動いてたので、どっか違ったやり方をした部分を戻してやれば動くはず。たぶん、あそこ。それで動くようになればいいけどなー。ダメなら終了だ。

本日の確認
  • Set Proterty と Get Property はセットで。
  • Canvas Set Text: テキスト情報をキャンバス(UI)のエレメントに送る。
  • [Clean] ボタンでだめなら、コンソール。だが、エラーはやっぱり見ても分からんぜー。無駄無駄むだー。

 やっぱり、頭痛いな。やっぱダメかな。