概要
Unityでゲームのロジックを記述するために使われるプログラミング言語がC# (シーシャープ) です。Unityを使いこなすためには、C#の基本的な文法を理解することが不可欠です。しかし、プログラミングが初めての方にとって、C#のすべてを一度に学ぶのは大変です。
そこでこの記事では、Unityでスクリプトを書き始める上で「これだけは知っておきたい」というC#の基礎中の基礎に絞って解説します。変数、データ型、関数、そしてif文やfor文といった基本的な制御構文を学び、Unityで簡単なロジックを組めるようになることを目指します。
変数とデータ型
変数とは、数値や文字列などのデータ(値)を入れておくための「箱」のようなものです。C#では、この箱に何を入れるかに応じて、データ型を明確に指定する必要があります。
Unityで特によく使われる基本的なデータ型を見ていきましょう。
| データ型 | 説明 | 例 |
|---|---|---|
int | 整数(-2, -1, 0, 1, 2...) | int playerScore = 100; |
float | 浮動小数点数(小数)。数値の末尾にfを付ける。 | float speed = 5.5f; |
bool | 真偽値(trueかfalseのどちらか) | bool isGameOver = false; |
string | 文字列。ダブルクォーテーションで囲む。 | string playerName = "Hero"; |
Vector3 | 3次元のベクトル(x, y, z座標)。位置や方向を表す。 | Vector3 startPosition = new Vector3(0, 1, 0); |
GameObject | Unityのゲームオブジェクトそのもの。 | public GameObject playerObject; |
変数の宣言と使い方
変数は [データ型] [変数名]; の形で宣言し、= を使って値を代入します。
using UnityEngine;
public class VariableExample : MonoBehaviour
{
// 変数の宣言
int health; // 体力(整数)
float moveSpeed; // 移動速度(小数)
bool isJumping; // ジャンプ中か?(真偽値)
void Start()
{
// 変数に値を代入
health = 100;
moveSpeed = 7.5f;
isJumping = false;
// 変数の値をコンソールに出力
Debug.Log("体力: " + health);
Debug.Log("移動速度: " + moveSpeed);
}
}
public変数
変数の前にpublicキーワードを付けると、その変数はUnityエディタのInspectorウィンドウに表示され、プログラマーでなくても値を調整できるようになります。これはゲームバランスの調整などに非常に便利です。
using UnityEngine;
public class PlayerSettings : MonoBehaviour
{
// public変数はInspectorに表示される
public string playerName = "Default Name";
public float jumpPower = 10f;
public int maxHealth = 200;
}
関数(メソッド)
関数(またはメソッド)は、特定の処理をひとまとめにしたものです。関数を定義しておくことで、同じ処理を何度も呼び出して再利用できます。
C#の関数は以下のように定義します。
[戻り値の型] [関数名]([引数]) { ...処理... }
- 戻り値の型: 関数が処理を終えた 後に返す値のデータ型。値を返さない場合は
voidを指定します。 - 関数名: 関数の名前。処理内容がわかるような名前を付けます。
- 引数: 関数に渡す情報。複数ある場合はカンマで区切ります。不要な場合は空にします。
using UnityEngine;
public class FunctionExample : MonoBehaviour
{
void Start()
{
// 関数を呼び出す
SayHello();
// 引数を渡して関数を呼び出し、戻り値を受け取る
int result = Add(10, 5);
Debug.Log("10 + 5 = " + result);
}
// 引数も戻り値もない関数
void SayHello()
{
Debug.Log("こんにちは!");
}
// int型の引数を2つ受け取り、int型の値を返す関数
int Add(int a, int b)
{
int sum = a + b;
return sum; // returnキーワードで値を返す
}
}
UnityのStartやUpdateも、Unityエンジンによって特定のタイミングで呼び出される特殊な関数の一種です。
制御構文
プログラムの流れをコントロールするのが制御構文です。ここでは最も基本的なif文とfor文を紹介します。
if文(条件分岐)
if文は、「もし〜ならば、...する」という条件に応じた処理の分岐を作ります。
int score = 85;
if (score >= 80)
{
Debug.Log("素晴らしい!");
}
else if (score >= 60)
{
Debug.Log("合格です。");
}
else
{
Debug.Log("もう少し頑張りましょう。");
}
for文(繰り返し)
for文は、同じ処理を指定した回数だけ繰り返します。
// 0から9まで、10回繰り返す
for (int i = 0; i < 10; i++)
{
Debug.Log("現在のカウント: " + i);
}
例えば、たくさんの敵キャラクターを一度に生成する、といった処理に使えます。
まとめ
今回は、Unityでスクリプトを書く上で最低限必要なC#の基礎を学びました。
- 変数: データを入れておく箱。
int,float,bool,stringなどが基本。 - 関数: 処理のまとまり。
voidは戻り値なし。 if文: 条件によって処理を分ける。for文: 処理を繰り返す。
これらの要素は、あらゆるスクリプトの基本となります。最初は難しく感じるかもしれませんが、実際にUnityで簡単なスクリプトを書きながら使っていくうちに、自然と身についていきます。まずはこれらの基本を道具として、ゲームに簡単な動きやルールを加えてみましょう。