『Unity C#基礎』 第七回: 関数とメソッド - コードの再利用性を高める
今回は、プログラムの基本である関数やメソッドについて学んでいきます。ゲーム開発においても、繰り返し行う処理を関数にまとめておくことで、コードを整理しやすくなり、メンテナンスもしやすくなります。
関数とは?
関数は、特定の処理をまとめて定義し、必要なときにその処理を呼び出すことができるものです。C#では、関数のことをメソッドと呼ぶことが一般的です。
例えば、ゲームの中でプレイヤーのHPを減らす処理を何度も使う場合、その処理を関数にしておくと便利です。
関数の基本構造:
void 関数名()
{
// 実行される処理
}
例: プレイヤーにダメージを与える関数
void DamagePlayer()
{
int playerHP = 100;
playerHP -= 10;
Debug.Log("プレイヤーのHP: " + playerHP);
}
この関数では、プレイヤーのHPを10減らし、その結果をコンソールに表示します。
引数と戻り値
関数には引数(ひきすう)と呼ばれる、外部から値を受け取るための変数を設定することができます。また、戻り値を設定することで、処理結果を関数の外に返すことも可能です。
引数を持つ関数:
void DamagePlayer(int damage)
{
int playerHP = 100;
playerHP -= damage;
Debug.Log("プレイヤーのHP: " + playerHP);
}
関数の呼び出し:
DamagePlayer(20); // プレイヤーのHPを20減らす
この例では、関数の引数damageに値を渡し、プレイヤーのHPを減らす処理を行っています。
戻り値を持つ関数:
int GetPlayerHP()
{
int playerHP = 100;
return playerHP;
}
関数の呼び出しと戻り値の利用:
int currentHP = GetPlayerHP();
Debug.Log("現在のプレイヤーのHP: " + currentHP);
このように、関数は処理を行った結果をreturnキーワードで返すことができます。
関数を使った実用例
では、実際のゲームでよく使われる関数をいくつか見ていきましょう。
敵キャラクターにダメージを与える関数:
void DamageEnemy(GameObject enemy, int damage)
{
EnemyStatus status = enemy.GetComponent<EnemyStatus>();
status.hp -= damage;
Debug.Log("敵のHP: " + status.hp);
}
この関数では、敵キャラクターのHPを減らす処理を行っています。引数として敵のゲームオブジェクトとダメージ量を受け取り、敵のHPを減らします。
プレイヤーの位置を移動する関数:
void MovePlayer(Vector3 newPosition)
{
transform.position = newPosition;
}
この関数は、プレイヤーの位置を新しい位置に移動させるためのものです。引数としてVector3型の新しい位置を受け取ります。
オーバーロード
C#では、オーバーロードという、同じ名前の関数を複数定義できる機能があります。異なる引数の組み合わせで関数を呼び出すことができるため、柔軟な設計が可能です。
オーバーロードの例:
void DamagePlayer()
{
int playerHP = 100;
playerHP -= 10;
Debug.Log("プレイヤーのHP: " + playerHP);
}
void DamagePlayer(int damage)
{
int playerHP = 100;
playerHP -= damage;
Debug.Log("プレイヤーのHP: " + playerHP);
}
この例では、引数なしと引数ありの2つのDamagePlayer関数を定義しています。状況に応じて適切な関数が呼び出されます。
再帰関数
再帰関数とは、自分自身を呼び出す関数のことです。ゲーム開発では、複雑な処理をシンプルに書ける場合があります。ただし、誤って無限ループに陥ることがあるので、使用する際は注意が必要です。
再帰関数の例:
int Factorial(int number)
{
if (number == 1)
return 1;
return number * Factorial(number - 1);
}
この関数は、与えられた数の階乗(factorial)を計算します。例えば、Factorial(5)は5! = 5 * 4 * 3 * 2 * 1 = 120を返します。
まとめ
関数は、特定の処理をまとめ、再利用可能にする手段です。
引数を使って外部からデータを受け取り、戻り値を使って処理結果を返すことができます。
オーバーロードを利用することで、同じ名前で異なる処理を実行できる関数を定義できます。
再帰関数は自分自身を呼び出す関数で、複雑な処理をシンプルに表現できます。
次回は、クラスとオブジェクト指向について学びます。ここから一気に難しくなりますが、きちんと解説していきます!