Unityはゲーム開発に特化したゲームエンジンであり、C#はマイクロソフトが開発したオブジェクト指向プログラミング言語です。
C#を学ぶことによって、Unityでゲーム開発をする幅が広がるのでどんなゲームでもつくれるようになります。
そこでこの記事では、UnityのC#の基礎を解説します。
![ヤスオ](https://www.yasuoblog.blog/wp-content/uploads/2023/08/yasuo-profile.png)
今回の記事は次のような人におすすめ!
UnityのC#の基本
Unityエディタ上でC#スクリプトを作成すると、以下のコードが書かれています。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}
中身は何もありませんが、初期状態から書かれているコードがどういう意味を持っているのかをここでは解説します。
1~3行目 using
Unityの機能や部品を利用する際に必要なusing文です。このコードを記述することで、Unityの機能や部品を自由に利用することができます。
具体的には、Unityの機能や部品を格納している名前空間をインポートしています。
Unityの機能や部品を利用する際には、その名前空間を明示的に指定する必要があります。
![ヤスオ](https://www.yasuoblog.blog/wp-content/uploads/2023/08/yasuo-profile.png)
あまり難しく考えずに、おまじないだと思っておきましょう!
5行目 MonoBehaviour
MonoBehaviourクラスを継承したクラスを作成します。MonoBehaviourクラスは、Unityのゲームオブジェクトに追加できるコンポーネントの基本クラスです。このクラスを継承することで、Unityのゲームオブジェクトに機能を追加することができます。
![ヤスオ](https://www.yasuoblog.blog/wp-content/uploads/2023/08/yasuo-profile.png)
5行目の「Player」の部分は自分で付けた名前です。
8行目 void Start()
ゲームが開始されたときに1度だけ実行される関数です。この関数は、ゲームの初期化や設定を行うのによく使用されます。
public void Start()
{
// ゲームの初期化を行う
// 設定を行う
}
14行目 void Update()
毎フレームごとに実行される関数です。この関数は、ゲームの動作や状態を更新するのによく使用されます。
public void Update()
{
// ゲームの動作や状態を更新する
}
7行目と13行目 //(コメント)
「//」の行は、プログラムではなくコメントです。プログラム実行時には一切読み込まれることはなく無視されるので、プログラム作成時のメモなどに使います。
// 1行まるごとコメントです
/*
* 複数行がコメントになります
* 複数行がコメントになります
* 複数行がコメントになります
*/
UnityのC#の基本構文
変数
変数とは、プログラムでデータを格納するための箱のようなものです。
// 変数の例
int yasuo = 1;
上記の例は、int型の「yasuo」という名前の箱の中に数字の「1」を入れました、ということになります。
変数には、名前、型、値の3つの要素があります。
型
変数の型は、変数が格納できるデータの種類を指定します。C#には、数値型、文字列型、配列型、オブジェクト型など、さまざまな型があります。
例では「int」が変数の方になります。
名前
変数の名前は、変数を識別するために使用されます。変数の名前は、アルファベット、数字などで構成することができます。
例では「yasuo」が変数の名前になります。
値
変数の値は、変数が格納しているデータです。変数の値は、プログラムの実行中に変更することができます。
例では「1」が変数の値になります。
演算子
演算子とは、プログラムでデータを処理するために使用される記号です。演算子には、算術演算子、比較演算子、論理演算子、代入演算子などがあります。
// 算術演算子の例
int a = 10;
int b = 20;
// 加算
int c = a + b;
// 減算
int d = a - b;
// 乗算
int e = a * b;
// 除算
int f = a / b;
条件分岐
条件分岐とは、ある条件が満たされているかどうかによって、実行する処理を分岐させることができます。条件分岐は、プログラムの処理をより複雑にするためによく使用されます。
条件分岐には、次の2つの基本的な種類があります。
- if文
- switch文
それぞれの条件分岐の文について簡単に解説します。
if文
if (条件式)
{
// 条件が満たされている場合の処理
}
if文は、条件が満たされている場合に、指定した処理を実行します。
条件式は、真または偽を返す式です。条件式が真の場合、if文のブロック内の処理が実行されます。条件式が偽の場合、if文のブロック内の処理は実行されません。
// if文の例
// 整数型の変数を宣言する
int x = 10;
// xが正の数であるかどうかを判定する
if (x > 0)
{
// xは正の数
Debug.Log("xは正の数です。");
}
上記のコードでは、変数「x」が10に設定されています(4行目)。if文の条件式は、変数「x」が0より大きいかどうかを判定します(7行目)。条件式が真の場合、if文のブロック内の処理が実行されます(10行目)。
switch文
switch (変数)
{
case 値1:
// 値1の場合の処理
break;
case 値2:
// 値2の場合の処理
break;
// ...
default:
// いずれの値にも該当しない場合の処理
break;
}
switch文の変数に代入されている値が、caseの値と一致する場合、caseのブロック内の処理が実行されます。caseのブロック内の処理が終了すると、break;が実行されます。break;が実行されない場合は、次のcaseの処理が実行されます。
caseの値がすべて一致しなかった場合、defaultのブロック内の処理が実行されます。
// switch文の例
// 整数型の変数を宣言する
int x = 10;
// xの値に応じて処理を分岐させる
switch (x)
{
case 1:
// xは1
Debug.Log("xは1です。");
break;
case 2:
// xは2
Debug.Log("xは2です。");
break;
default:
// xは1または2以外
Debug.Log("xは1または2ではありません。");
break;
}
上記のコードは変数「x」が10に設定されています(4行目)。caseの値は、1と2です(9行目と13行目)。変数「x」の値が1の場合は「case 1」が、2の場合は「case 2」の処理が実行されます。変数「x」の値が1または2以外の場合、defaultのブロック内の処理が実行されます(19行目)。
つまり、例では変数「x」に10を代入していて、「1」でも「2」でもないのでdefaultのブロック内の処理がされます。
ループ
ループとは、ある処理を繰り返し実行するプログラムです。ループは、プログラムの処理を効率的に行うためによく使用されます。
ループには、次の2つの基本的な種類があります。
- while文
- for文
それぞれの条ループの文について簡単に解説します。
while文
while (条件式)
{
// 繰り返し実行する処理
}
条件式は、真または偽を返す式です。条件式が真の場合、while文のブロック内の処理が繰り返し実行されます。条件式が偽の場合、while文のブロック内の処理は実行されません。
// while文の例
// 1から10までの数字を表示する
int i = 1;
while (i <= 10)
{
// 1から10までの数字を表示する
Debug.Log(i);
// iを1増やす
i++;
}
例では、変数「i」が1に設定されています(4行目)。while文の条件式は、変数「i」が10以下かどうかを判定します(5行目)。条件式が真の場合、while文のブロック内の処理が繰り返し実行されます(8行目と10行目)。
変数「i」の値が10になった場合、while文の条件式が偽となり、while文のブロック内の処理は実行されなくなります。
for文
for (初期化式; 条件式; 反復子)
{
// 繰り返し実行する処理
}
ループの最初に、まずは初期化式が実行されます。続けて、条件式でループを継続するかどうかを判定し、反復子はループの最後に実行される式です。
// 1から10までの数字を表示する
for (int i = 1; i <= 10; i++)
{
// 1から10までの数字を表示する
Debug.Log(i);
}
上記のコード例では、for文の初期化式で、変数「i」を1に設定しています。条件式では、変数「i」が10以下かどうかを判定していて、反復子は変数「i」を1増やす処理を行っています。
ループは、プログラムの処理を効率的に行うためによく使用されます。ループを理解することで、Unityでのプログラミングの効率を向上させることができますので、ぜひ覚えましょう!
まとめ
この記事では、UnityのC#の基礎を解説しました。
今回解説したことをまとめておきます。UnityのC#の基礎は、ゲームを開発していく上で重要ですので何度もプログラムを書いて覚えましょう!
コメント