UnityというかC#で変数を宣言する方法、型の種類についてです。
変数の型
Unityで使える変数の型としては、たとえば以下のようなものがあります。
型名 | 型の意味 | 扱える範囲 |
---|---|---|
int | 整数 | -2,147,483,648~2,147,483,647 |
float | 浮動小数点 | -3.402823E+38~3.402823E+38 |
double | 倍精度浮動小数点 | -1.79769313486232E+308~1.79769313486232E+308 |
bool | ブール値 | trueまたはfalse |
string | 文字列 | テキスト |
GameObject | ゲームオブジェクト | ゲームオブジェクト名 |
Text、SpriteRenderer、Scriptなど | オブジェクトのコンポーネント | コンポーネント名 |
変数の宣言
習うより慣れろで、まず変数を宣言して使ってみます。
どこで変数を宣言すべきかはどの程度使いまわすかによります(後述)。局所的にしか使わないならメソッド内で指定で問題ありません。
どこで変数を宣言すべきかはどの程度使いまわすかによります(後述)。局所的にしか使わないならメソッド内で指定で問題ありません。
//Unity C#
void Start()
{
//整数型の変数nを作成
int n;
//nに1を代入
n = 1;
//nをコンソールに表示
Debug.Log(n);
}
変数の宣言としては、
型 変数名;
という形式が最もシンプルです。変数名 = 値;
で変数に別の値を代入することができます。//Unity C#
//整数型の変数nを作成+1を代入
int n = 1;
また、
型 変数名 = 値;
とすることで、変数の宣言と同時に初期値を代入することができます。スクリプトをオブジェクトにアタッチします(Startなのでどのオブジェクトでも可)。
実行すると、作った変数nに代入した数値がコンソールに表示されます。
//Unity C#
n = 2;
//nをコンソールに表示
Debug.Log(n);
}
変数の値を変えてやれば、
出力される結果も変わります。
変数とはこのようにゲーム内で変動する値のことで、変数ごとに名前が付けられます。
変数には決まったフォーマット(データ型)以外の値を代入することはできません。たとえばデータ型がint(数値)の変数に、文字列を代入するとエラーになります。
数値管理やフラグ管理の他、長い構文を変数に代入することでコードをスリムにする役割も果たします。
変数の計算
//Unity C#
int n;
n = 1 + 2;
Debug.Log(n);
では、変数を使って計算をしてみたいと思います。
まず作った変数nに、1+2を代入する場合は、代入する値の部分に足し算をそのまま表記します。
まず作った変数nに、1+2を代入する場合は、代入する値の部分に足し算をそのまま表記します。
コンソールには、結果である3が表示されます。
//Unity C#
int n = 1;
int m = 2;
n = m + 2;
Debug.Log(n);
数字だけでなく、変数を計算に使うこともできます。
結果は4です。さらに、
//Unity C#
int n = 1;
n = n + 1;
Debug.Log(n);
nとn+1を=でつなげることもできます。数学の式としてはおかしいですが、C#ではA = Bは「BをAに代入する」という意味なので、
ちゃんと動きます。結果は2となります。
演算子
//Unity C#
int n = 1;
//足し算
n = 1 + 2;
//引き算
n = 2 - 1;
//掛け算
n = 1 * 2;
//割り算
n = 2 / 1;
四則演算はそれぞれ+、-、*、/と表記します。
//Unity C#
int n = 1;
//足し算(n = n + 2と同じ意味)
n += 2;
//引き算(n = n - 1と同じ意味)
n -= 1;
//掛け算(n = n * 2と同じ意味)
n *= 2;
//割り算(n = n / 2と同じ意味)
n /= 2;
変数の値を変更する場合は、演算子に=を付ける形で表記することもできます。
//Unity C#
int n = 1;
//足し算(n + 1)
n ++;
//引き算(n - 1)
n --;
また、変数の数字を1だけ増やす場合は変数の後に+をふたつ(インクリメント演算子)、1だけ減らす場合は-をふたつ(デクリメント演算子)置く書き方もできます。
文字列変数
//Unity C#
string n = "Hello";
stringは文字列を代入できる変数の型です。数値とちがい、文字列を代入する時は
""
で閉じる必要があります。//Unity C#
void Start()
{
string n = "Hello";
Debug.Log(n + ",World");
}
文字列どうしを繋げる場合も+を使います。たとえばHelloを代入したnのあとに
",World"
という文字列を繋げて出力すれば、繋がった文字列として表示されます。
ローカル変数とグローバル変数
ローカル変数とグローバル変数のちがい、同時に存在した場合などについて解説します。
ローカル変数
押すと変数が表示されるボタンがあるものとします(作り方)。
//Unity C#
using UnityEngine.UI;
public class textChanger : MonoBehaviour
{
public void ButtonClick()
{
//ローカル変数
string n = "1";
GameObject text = GameObject.Find("Text");
text.GetComponent<Text>().text = n;
}
}
コード的には「1」をString(文字列)型として扱い、そのままテキストに表示するというものです。
このように、メソッド内で作った変数はローカル変数と呼ばれます。
ローカル変数は、作成したメソッド内でのみ使うことができます。
このように、メソッド内で作った変数はローカル変数と呼ばれます。
ローカル変数は、作成したメソッド内でのみ使うことができます。
ゲームを実行して、ボタンを押すと数字が変わります。
//Unity C#
void Start()
{
//ローカル変数
string n = "1";
}
public void ButtonClick()
{
GameObject text = GameObject.Find("Text");
//nを見付けられないのでエラーになる
text.GetComponent<Text>().text = n;
}
こういうコードはローカル変数を別のメソッドから参照しようとしてるので、エラーになります。
ただし、別々のメソッド内で同じ名前のローカル変数を作ることはできます。その場合名前は同じでも、全くちがう別々の変数として扱われます。
ただし、別々のメソッド内で同じ名前のローカル変数を作ることはできます。その場合名前は同じでも、全くちがう別々の変数として扱われます。
グローバル変数
//Unity C#
public class textChanger : MonoBehaviour
{
//グローバル変数
string n = "1";
このようにクラス名の後、メソッドが始まる前に宣言された変数はグローバル変数と呼ばれます。
グローバル変数は、同じクラス内のどのメソッドからでも参照することができます。
グローバル変数は、同じクラス内のどのメソッドからでも参照することができます。
ローカル変数とグローバル変数が混在
//Unity C#
public class textChanger : MonoBehaviour
{
//グローバル変数
string n = "1";
public void ButtonClick()
{
//ローカル変数
string n = "2";
GameObject text = GameObject.Find("Text");
text.GetComponent<Text>().text = n;
}
ローカル変数とグローバル変数で同じ名前の変数がある場合、
ローカル変数のほうが優先度が高いです。変数の名前には注意しないと、気付かないうちに別の変数を操作する可能性があります。
やりたいことから逆引きするUNITYの使い方まとめ
Unityをやりたいことから学習していけるよう、機能・用途別にまとめたページです。C#の命令別の逆引きは現時点で作っていません。2019の時期に書き始めているので、それより前のバージョンについては言及しません。
コメント