今回はプログラムの基礎解説の第二弾となる「変数」についての解説を行います。変数は必ず必要となる要素なので、しっかりとポイントを把握しましょう!
■C#スクリプト解説
・【Unity】スクリプト入門!C#の基礎解説
→【Unity】C#における変数の基礎を解説
・【Unity】C#の変数計算と配列
■インストール解説はこちらから
そもそも「変数」とは
数学でいうと変数は「x」であったり「y」であったりなど、計算上でよく出てきたものではないかと思います。
しかし、プログラムで「変数」というと少しニュアンスが変わってきます。プログラムでの変数は、数字や文字列を入れておくための箱だと考えてください。
この変数は非常に多くの場所で使うことになります。プレイヤーの名前、HPやMP、現在の経過時間などなど、ゲームは変数によって作られているのです!
この変数の使い方をしっかりと把握することが、プログラムの第一歩と言えます。次の項目から、早速作り方や使い方を覚えていきましょう。
■覚えるPOINT!
変数は数字や文字を入れる箱。
変数の作り方
上の「int seisu = 5;」のように、変数を作ることを「変数を宣言する」と言います。これから使う変数を宣言している状態です。
変数は以下の形で作ることができます。
データ型 好きな名前 = 初期値;
一つずつ解説していきます。
・データ型
どのデータ型を使うかで、扱えるデータの種類が変わってきます。
int:整数(1,2,3などを設定できる)
float:小数点のある数字(1.2f,1.5fなど)
※floatの数字は一番最後に「f」を付ける
double:floatよりも細かな小数点(1.0000000….)
※基本はfloat型を使っていても問題なし
string:文字列(“あいう”,”言葉”,など)
どういったデータを扱いたいかで、どのデータ型を使うかを決めます。多くの種類があるのですが、まずは代表的な上の例を覚えておくと良いでしょう。
・好きな名前
変数は自分が把握しやすい好きな名前で宣言できます。例では int型のseisuという名前にしています。
※ int int = 0;など型名を変数名にすることはできません!
・= 初期値
変数宣言時に初期値を設定できます。数学で「=」は等しいということを表す記号でしたが、プログラムでは「左辺に右辺の値を入れる」という意味になります。
・「 ;(セミコロン)」
「 ;(セミコロン)」はその行の終わりをコンピューターに伝える役割があります。「{」〜「}」で括る場合を除き、行の終わりには必ず「 ; 」を付ける必要があります。
ちなみに、行の終わりと言っても、意味的には処理の終わりに付けるという感じです。そのため、一つの処理(変数宣言など)を複数の行にわたって書くことや、逆に一つの行にまとめて複数の処理を書くこともできます。
しかし、非常に見にくいソースコードになるので、絶対にやらないようにしましょう。基本は1行に一つの処理を書く( ; で改行を行う)ようにします。
■覚えるPOINT!
変数には様々な「型」があり、使うデータで使い分ける。
変数を作る位置と有効範囲
ここからは変数を作る位置とその有効範囲について説明していきます。
ですがその前に、前回までの知識を活かして変数に設定している数字をUnityの実行状態で確認してみましょう。
前回使った「print(“ここに文字”);」は「 ( ) 」の中に変数などを直接入れると、コンソールにその中身を表示することができます。この際「 ” 」は必要ないので注意してください。
上のサンプル画像のようにスクリプトを作ったら、空のオブジェクトにスクリプトをアタッチして実行状態で処理を確認してみましょう!
※アタッチなどを忘れた場合はアタッチについての記事を確認してください。
問題なくスクリプトを書けていれば、変数の初期値に設定した数値がコンソールに表示されると思います。
※上手く表示されない場合は、全角や半角などの入力ミスがないかの確認や、スクリプトを上書き保存したかの確認などをやってみてください。
確認ができたら、変数を作ることができる位置について把握しましょう! 以下のサンプルのように「seisu_start」と「seisu_update」を作ってみましょう。
これも実行してみるとUnityのコンソールで問題なく表示がされると思います。このように、変数はStart()やUpdate()と言った関数の中でも宣言することができるのです。
ただしこの関数内変数については、有効範囲に注意しなければいけません。試しに以下のように書き換えを行ってみます。
Update()の中で、「seisu」については問題なく使用できていましたが、「seisu_start」はエラーの赤線が表示されます。
これは、関数内変数はその関数の中でしか使えないという決まりがあるからです。これを変数のスコープ(有効範囲)と言ったりします。
変数は以下の場所に作ることができます。
それぞれ特徴があるので覚えておきましょう。
1:クラス内変数
クラス内のどの関数でも使える変数。他の関数でも同一の変数を使い回す時などはこちらを使う。
2:関数内変数
その関数内でのみ使える変数。ちょっとした一時計算などを行うときに宣言して使う。
それぞれの使い分けは、今後サンプルコードを書いていくとなんとなく把握できると思います。なれないうちは、とりあえず「1」番の位置に宣言できると覚えておきましょう。
■覚えるPOINT!
変数は宣言する位置によって有効範囲がある。
■初期値を入れないとどうなる?
実は「1」番のクラス内変数は、初期値を入れずに宣言をすることができます。その場合、int(整数型)なら自動で「0」が設定されるようになります。
しかし「2」番の関数内変数は、初期値を入れずに中身を確認しようとするとエラーが出ます。このように、宣言の位置によっては初期値を省くことができるかなども変わってきます。
しかし、最初のうちは「初期値を入れるかどうかを宣言の場所によって使い分ける」と覚えるのは手間だと思いますので、変数の宣言は「データ型 好きな名前 = 初期値;」の形で覚えてしまいましょう!
変数を書き換えてみる
変数の宣言方法や、宣言位置について学んだので、次は変数の書き換え(中身の変更)について学びましょう。しかしそんなに難しいことはないので、基本の書き換えは以下のサンプルを見れば把握できると思います。
変数は以下の方法で中身を書き換えることができます。
■変数の書き換え
変数名 = 数値(変数の型に合った値)
上のサンプルを実行してみると、中身が変わっているのを確認できると思います。「=」は右辺の数値を左辺に入れるという決まりがあるので、数値で変数の中身を上書きすることができます。
■覚えるPOINT!
「=」で中身を書き換えできる。
まとめ
今回は変数の作り方と、宣言の場所による有効範囲の違いなどを解説しました。
次回はさらにこの変数を使って計算を行う方法や、配列という変数を便利に扱う方法について解説します!
■C#スクリプト解説
・【Unity】スクリプト入門!C#の基礎解説
→【Unity】C#における変数の基礎を解説
・【Unity】C#の変数計算と配列
■インストール解説はこちらから