江上宿六です。
前回UIのTextの説明をしてきました。 位置を変えたりサイズや色を変えたり
出来るようにはなったと思いますが、どうやって数字を取得したり、書き換えたり
するのかというのが問題ですね。 そこで使われるのが、やっぱりスクリプトです。
配置したTextも名前を分かり易いように変えておきましょう。
ではC#Scriptを追加し、GameDirectorと命名して記述していきましょう。
だいぶ長ったらしい事になりましたが、大した事はやっていません。
まず注意しなければいけないのは4行目、using UnityEngine.UIとあります。
この一文がないとUIが使えません、普通にエラーになります。
7行目、GameObjectを3つ宣言しています。 これらはUIのスコアのテキストと
フロアのテキストと、床のオブジェクトを取得するために宣言しています。
8行目はゲームスコアを宣言しており、スコアはこれを表示する事になります。
Start内ではそれぞれGameObject.Findという文が乱発されていますが、
これはシーン上にあるオブジェクトをオブジェクト名で探して取得し、
それらのオブジェクトを扱えたり値を参照出来るようにするものです。
それぞれScore、Floor、Planeのオブジェクトを取得しています。
そしてUpdateです。 scoreText.GetComponent<Text>().text = ~とあります。
記述自体は難解なんですけども、これは先ほどFindで見つかったスコアのTextに
その先のテキストを代入してやるというものです。
ToStringというのがありますが、これは数値を文字列に変換してくれるもので
こういう数値を文字列として出力するのには恐らく必要なものです。
19行と22行で記述が違いますが19行のは"D"とすることで整数として出力し、
22行の"F1"は少数点第一位まで出力するという風になっています。
これでscoreTextの方は"Score : "と文字列化したgameScoreを足したものを出力し
floorTextの方は"Floor : "と文字列化したplaneのy座標を足したものが出力される
という事になります。
これで実行するとこうです。 現状スコアの処理はありませんし、planeも
初期位置の0なので微妙な感じになっていますが、正しく表示されている
というのは分かってもらえるとは思います。
という事で続きは次回になります。 Sphereを弾き飛ばした時に得点を得たり
SphereとPlaneとの接触数が指定の数を上回った時にPlaneを下降させるという
ゲームっぽい処理をしたり、それによるUIの動作について書ければと思います。