見出し画像

『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を返します。

まとめ

  • 関数は、特定の処理をまとめ、再利用可能にする手段です。

  • 引数を使って外部からデータを受け取り、戻り値を使って処理結果を返すことができます。

  • オーバーロードを利用することで、同じ名前で異なる処理を実行できる関数を定義できます。

  • 再帰関数は自分自身を呼び出す関数で、複雑な処理をシンプルに表現できます。

次回は、クラスとオブジェクト指向について学びます。ここから一気に難しくなりますが、きちんと解説していきます!


いいなと思ったら応援しよう!