この記事は「Unityでゲームを作るうえで必要なC#プログラミングの基礎知識」を解説するシリーズの第四弾で、今回はメソッドについて詳しくご説明するという内容になっています。
Unityでゲームを作る際にはC#によるプログラミングは避けて通れないので、プログラミングが苦手だなぁという方は本シリーズをご覧いただき基礎知識を学んで頂ければと思います。
メソッドとは?
まずはじめにメソッドとは何か?という点からご説明しようと思います。
メソッドは簡単に言うと「処理のまとまりを部品化して使いまわせるようにする機能」のことです。繰り返し処理のページにも書きましたが、プログラミングにおいて同じような処理を何度も書くのは面倒だし非効率的ですよね。そこで何度も使う処理はメソッドにまとめておき、必要なタイミングでそれを呼び出せば効率がよいというわけです。
ちなみに多くのプログラミング言語にもメソッドと同様の機能があり、一般的には関数と呼ばれます。
メソッドの定義方法と使い方
では、ここからメソッドの定義方法と使い方についてご説明します。
メソッドの定義方法
まずはメソッドの定義方法についてです。とりあえず次のサンプルスクリプトをご覧ください。
using UnityEngine; public class SampleScript : MonoBehaviour { int hp = 50; void Start() { RecoverHp(50); } void Update() { } void RecoverHp(int value) { hp += value; } }
Unityでよく見かけるStartメソッドとUpdateメソッドのほかに「RecoverHp」という名前のメソッドが書いてあります。
void RecoverHp(int value) { hp += value; }
これが今回自分で定義したメソッドですね。ここでは「HPを回復する処理」を行っています。
このようなメソッドの定義のしかたは次のとおりです。
戻り値の型 メソッド名(引数の型 引数) { ここにメソッドの処理; }
戻り値や引数といった用語が出てきたのでそれぞれ詳しく解説しますね。
戻り値について
戻り値とは、メソッドが処理を行った結果として出力される値のことです。戻り値がある場合は必ずreturnを使って結果を返す必要があります。
戻り値の型 メソッド名() { ここにメソッドの処理; return 戻り値として返す値; }
例えば次のDamageメソッドの場合はint型のダメージ値が戻り値として出力されます。
using UnityEngine; public class SampleScript : MonoBehaviour { int hp = 100; int defense = 10; void Start() { hp -= Damage(50); Debug.Log("残りHP:" + hp.ToString()); } void Update() { } int Damage(int value) { int damage = value - defense; Debug.Log(damage.ToString() + "のダメージを受けた!"); return damage; } }
なお戻り値は無くてもかまいません。その場合は戻り値の型の部分には「void」と書きます。
引数について
次に引数はメソッドに渡す値のことです。引数として渡された値はメソッド内で使うことができます。引数は無くてもいいですし、一つだけではなく複数用意することもできます。
void メソッド名(引数の型 引数1, 引数の型 引数2, …) { ここにメソッドの処理; }
メソッドの使い方
次にメソッドの使い方についてですが、上のサンプルスクリプトからも分かるとおり
- 引数も戻り値もなければ呼び出すだけ
- 引数があれば引数として何らかの値を渡す
- 戻り値があればそれを利用する(※無理に使う必要はない)
という感じですね。複雑な処理もメソッドを呼び出せばあとは勝手にやってくれるので便利です。
メソッドのオーバーロード
さて最後にメソッドのオーバーロードについて簡単に説明しておきます。
メソッドを作っていると「引数だけが違う同名のメソッドをいくつか作りたい」という場面が出てくることがあります。例えば、同じような処理を行うメソッドだけどint型・float型の引数にそれぞれ対応したい場合などですね。
void OverloadSample(int value) { } void OverloadSample(float value) { }
C#ではこのようなことが可能です。これをメソッドのオーバーロードと言います。オーバーロードを活用することで、同じメソッド名で違う引数を扱うことができて便利な場合があります。
おわりに
以上、C#のメソッドについてご説明しました。メソッドはプログラミングにおいて欠かせないばかりか、良いソースコードを書くためにも必須の機能なのでぜひ使いこなせるようになって頂ければと思います。