これとIf文だけできればとりあえずアドベンチャーゲームっぽいものが作れる、「何かを押したらテキストが変化する」処理の作り方です。
要するにコンポーネントを取得して、イベントに合わせてそれに別の値を代入しています。画像の変更などでもやってることは実質同じです。
成果物
クリックすると文字列が変化する、数値が加算される命令を作ります。
テキストを変更する
前に作ったクリックするとジャンプするプログラムの隣に、テキストを設置しておきます。スクリプトはキツネにセットしてあります。
ここの「マウスでクリックしたときの処理」に、テキストを変更するコードを書き加えたいと思います。
テキストはUIオブジェクトというくくりの一種で、これをコードで扱うには、最初の名前空間の宣言でusing UnityEngine.UI;という宣言をする必要があります。要はコピペすればいいです。
宣言をした上で、クラス名の中でpublic Text text;のように記述すると、「text」という名前を付けた「Textコンポーネント」を使うという意味になり、
キツネのインスペクターに、Textコンポーネントをセットできるようになります。
ヒエラルキーから内容を変更したいTextオブジェクトをドラッグし、
セットします。これで、TextオブジェクトのTextコンポーネントがtextという変数名でセットされました。
Textコンポーネントにはtextというプロパティがあり、textプロパティを変更すると文章の内容が変わります。いやがらせみたいなコードですが、慣れるしかないです。
Textコンポーネントにはtextというプロパティがあり、textプロパティを変更すると文章の内容が変わります。いやがらせみたいなコードですが、慣れるしかないです。
てなわけで、クリックした時にtext.text =”1″;を実行します。前のtextが変数名で、実質「TextオブジェクトのTextコンポーネント」です。それのtextプロパティを1に変更する、という命令です。
実行すると、キツネの数値が1に変更されます。
数字を表示/加算
textプロパティに対して、””で囲まない(文字列でない)直接数字を代入しようとするとエラーになります。
解決策としては、変数で数値(int)を作り、これに数値を代入して、
最後にToString()を付けて文字列に変換した数値を表示する、という方法があります。ToStringは変数を文字列に変換する命令です。
この状態で、さっきと同じく数字の1を表示する命令になっていますが、
さらに後ろに変数の値を+1する命令を加えれば、
クリックするたびに数値が加算される命令となります。
//Unity C#
public class jump : MonoBehaviour
{
public Text text;
public int addText= 1;
void OnMouseDown()
{
this.GetComponent().velocity = new Vector2(0, 10);
//変数addTextを文字列に変換し、text.textに代入=表示する文章を変更
text.text = addText.ToString();
//変数addTextを1加算
addText = addText + 1;
}
}
やりたいことから逆引きするUNITYの使い方まとめ
Unityをやりたいことから学習していけるよう、機能・用途別にまとめたページです。C#の命令別の逆引きは現時点で作っていません。2019の時期に書き始めているので、それより前のバージョンについては言及しません。
コメント