[第4回] 変数の使い方を学ぶ|Unityで学ぶC#入門
「Unityで学ぶC#入門」の連載第3回は「C#スクリプトの作成・実行方法を学ぶ」でした。
第4回の今回は変数の使い方についてご紹介していきます。
プログラミングをするうえで必ずでてくるのが「変数」です。変数について理解していないと、意外なところでつまずいたりしてしまうので、基本中の基本ではありますがしっかりと理解しておきましょう。
変数とは
そもそも変数ってなに?と疑問に思う方もいらっしゃるかもしれません。
プログラミングで使用する変数というのは「ある特定の型の値を保存しておくための箱」のことを指します。
数学でxやyのような数値を文字で置き換えた変数を使用したことがあると思います。
つまり、xやyというのは「数値の型をした値を保存するための箱」と解釈することができます。
変数の定義
C#の変数の定義の方法についてご説明します。
まずはUnityでC#スクリプト「Test」を作成してください。
また、作成したスクリプトはあらかじめゲームオブジェクトに設置した状態しておいてください。
ここまでの方法は第3回の記事で詳しくご紹介しておりますのでぜひご参考ください。
作成したら、以下のようにスクリプトを編集してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Test : MonoBehaviour { //int型の変数aを定義 int a; // Start is called before the first frame update void Start() { //aに「1」を代入する a = 1; //aの値をCUIで確認する Debug.Log(a); } } |
int型の変数aを定義している部分に注目します。
1 |
int a; |
「int」は変数の中に入れる値の型を決めるものです。「int」は整数を指します。
「a」は変数の名前で、型の後ろで宣言します。
ですので、この「int a;」は「整数型の変数a」を作成するということです。
次にStart関数の中を確認します。
1 2 3 4 5 6 7 8 9 |
// Start is called before the first frame update void Start() { //aに「1」を代入する a = 1; //aの値をCUIで確認する Debug.Log(a); } |
aに「1」を代入する方法を確認します。
1 |
a = 1; |
「=」イコールで入れたい値を後ろに記述することで、その値をaに代入することができます。
最後の「Debug.Log()」は実際に変数aに値が入っているか確認するために記述しています。
では実際に実行してコンソールを確認してみましょう。
↓実行結果
「1」が出力されていることが確認できました。
このようにC#では
1 |
変数の型 変数名; |
で変数を作成することができます。
また、変数を作成したときに同時に値を代入することもできます。
1 |
int a = 1; |
このように記述すれば、Start関数内で「a = 1;」を記述する必要が無くなります。
↓ここまでの作業イメージ
変数の型
先ほどは「int」型と呼ばれる整数型を使用しましたが、C#を含むプログラミング言語には様々な型が存在します。
数値を扱う型
数値を扱う型についてご紹介します。
表にまとめましたのでご確認ください。
整数型
型 | 意味 | 範囲 |
int | 符号付32ビット整数 | -2,147,483,648 ~ 2,147,483,647 |
byte | 符号無し8ビット整数 | 0 ~ 255 |
long | 符号付64ビット整数 |
-9,223,372,036,854,775,808 〜 9,223,372,036,854,775,807
|
整数型には他にも「sbyte」や「short」などがあります。
現時点で整数値を扱いたいときは「int」型を使用するという認識で問題ありません。
↓使用例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Test : MonoBehaviour { //int型の変数aを定義 int a = 100000; //byte型の変数bを定義 byte b = 255; //long型の変数cを定義 long c = 100000000; // Start is called before the first frame update void Start() { //aの値をCUIで確認する Debug.Log("a = " + a); Debug.Log("b = " + b); Debug.Log("c = " + c); } } |
↓実行結果
浮動小数点型
型 | 範囲 | 有効桁数 | サフィックス |
float | ±1.5 x 10^(−45) 〜 ±3.4 x 10^38 | 6 ~ 9桁 | f/F |
double | ±5.0 × 10^(−324) – ±1.7 × 10^308 | 15 〜 17桁 | d/D |
decimal | ±1.0 x 10^(-28) 〜 ±7.9228 x 10^28 | 28 〜 29桁 | m/M |
浮動小数点を使用する際には「サフィックス」と呼ばれる接尾辞を使用します。簡単に説明すると、その数値がどの型なのかをわかりやすくするものです。サフィックスをつけ忘れるとコンパイルエラーになるので気をつけましょう。
※余談ですが、「decimal」型は金融のシステム開発の際によく使用します。基本的には使わなくても問題ありません。
現時点で小数点を扱いたいときは「float」型を使用するという認識で問題ありません。
↓使用例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Test : MonoBehaviour { //float型の変数aを定義 float a = 0.001f; //double型の変数bを定義 double b = 0.000001d; //decimal型の変数cを定義 decimal c = 0.000000000001m; // Start is called before the first frame update void Start() { //aの値をCUIで確認する Debug.Log("a = " + a); Debug.Log("b = " + b); Debug.Log("c = " + c); } } |
↓実行結果
その他よく使用する型
数値以外によく使用する型をご紹介します。
表にまとめましたのでご確認ください。
型 | 意味 | 値の例 |
bool | 「true」か「false」 | true,false |
char | 文字単体 | a,b,c |
string | 文字列 | hello,good |
「bool」型は 「true」か「false」の値を代入することができる型です。if文などの判定時に使用しますのでプログラミングをやるうえで避けられない型です。
「char」型は文字単体を格納するための型です。これは場合によっては使用するタイミングがあるかもしれません。
「string」型は文字列を格納するための型です。「string」型は、名前やそのほかの情報を格納するときに多用します。
↓使用例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Test : MonoBehaviour { //bool型の変数aを定義 bool a = true; //char型の変数bを定義 char b = 'X'; //string型の変数cを定義 string c = "hello"; // Start is called before the first frame update void Start() { //aの値をCUIで確認する Debug.Log("a = " + a); Debug.Log("b = " + b); Debug.Log("c = " + c); } } |
↓実行結果
変数関連でよくあるエラー
変数を使用するときに起こりうるエラーをまとめました。
違う型同士を参照する
数値を扱うときに、float型で定義した変数をint型の変数に代入しようとするとエラーが発生します。
↓例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Test : MonoBehaviour { //int型の変数aを定義 int a = 100; //float型の変数bを定義 float b = 10.0f; // Start is called before the first frame update void Start() { //int型にfloat型の値は入らない a = b; } } |
↓実行結果
※int型をfloat型に変換することは可能です。この感覚が身につくとこのようなエラーをすぐに見つけられるようになります。
型に収まらない数値を代入する
先ほどint型の範囲は「-2,147,483,648 ~ 2,147,483,647」とご紹介しました。
値がこれよりも大きくなってしまうとエラーが発生します。
↓例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Test : MonoBehaviour { //int型の変数aを定義 int a = 10000000000000000000; // Start is called before the first frame update void Start() { Debug.Log("a = " + a); } } |
↓実行結果
string型にダブルクオーテーションなしで代入する
string型にある文字列を代入するときに、ダブルクオーテーション(“”)なしで代入するとエラーが発生します。
エラーの原因は、ダブルクオーテーションがないと変数と勘違いされてしまうことにあります。
以下の例でいうと、変数helloの値を変数aに代入しようとしてしまうためエラーが発生します。
↓例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Test : MonoBehaviour { //string型の変数aを定義 string a = hello; // Start is called before the first frame update void Start() { Debug.Log("a = " + a); } } |
↓実行結果
まとめ
いかがでしたでしょうか。
C#の変数の使用方法についてご紹介してきました。
プログラミングにおいて変数を使わないことは無いくらい変数は重要なものです。しかし、なんとなく使用してしまって、変数絡みのエラーが発生してしまい、修正ができないという方もいます。
今後クラスやインスタンスについて理解するときに、変数を理解できていないと苦労します。
できるだけ疑問をなくして次のステップに進みましょう。
続けて第5回の記事に読む方はこちらをクリック
他の回の記事について気になる方はこちらをクリック
この記事はいかがでしたか?
もし「参考になった」「面白かった」という場合は、応援シェアお願いします!