引数/返り値/クラス
引数あり、返り値なしのメソッド
コード
void CallName(string name)
{
Debug.Log("Hello "+ name);
}
CallName("Tom");
出力結果
Hello Tom
説明
引数と返り値のあるメソッド
コード
int Add(int a,int b)
{
int c = a + b;
return c;
}
int answer;
answer = Add(2,3);
Debug.Log(answer);
出力結果
5
説明
クラス
概要
メソッドは「処理をまとめた物」だったが、クラスは「メソッドと変数をまとめた物」である。
Unity でゲームを作る際、プレイヤー、敵、武器、アイテム等の「モノ」毎にその動きを定義するスクリプトを作成する。
その場合、メソッドのような「処理単位」ではなくて「モノ単位」でスクリプトを作れた方が便利である。
具体的にはプレイヤーのHPやMPなどのステータス(変数)や攻撃、防御、魔法などのアクション(メソッド)が必要である。
これらの変数とメソッドをひとまとめにせず、バラバラに実装してしまうと、どの変数とどのメソッドが関連しているのか分からなくなってしまう。
しかし、クラスを使えば関係のある変数とメソッドをひとまとめに出来るため、スクリプトを管理しやすくなる。
また、クラスで使う変数を「メンバ変数」、クラスで使うメソッドを「メンバメソッド」と呼ぶ。
コード
class クラス名
{
メンバ変数の宣言;
メンバメソッドの実装;
}
説明
作成したクラスは int や string 等と同様に型のように使える。
つまり、Player クラスを作れば Player 型を使う事が出来るようになる。
(厳密には「クラス」と「型」は別物)
int num;
と書けば int 型の num 変数を作れるように
Player myPlayer;
と書けば Player 型の myPlayer 変数を作る事が出来るが、この状態では myPlayer 変数の中は空である。
int型の num 変数には「2」や「1500」等の数値を代入するのと同様に Player 型の myPlayer 変数には「プレイヤーの実体」を代入する。
この「実体」の事を「インスタンス」と呼ぶ。
また、下記のように記述する事で
myPlayer.メンバメソッド名(メンバ変数名)
myPlayer 変数が持つメンバメソッド(メンバ変数)を使用できる。
この先「.」で繋がった記述がたくさん出てくるが、「○○.××」を見たら「○○クラスが持つ××メソッド(変数)を使っている」と理解しておくと良いだろう。
イラスト
クラスの作成
コード
Player クラス
public class Player
{
private int hp = 100;
private int power = 50;
public void Attack()
{
Debug.Log(power + "のダメージを与えた");
}
public void Damage(int damage)
{
hp -= damage;
Debug.Log(damage + "のダメージを受けた");
}
}
その他のクラス
//Player 型(クラス)の myPlayer 変数に実体(インスタンス)を作成して代入
Player myPlayer = new Player();
//Player クラスの Attack() を呼び出す
myPlayer.Attack();
//Player クラスの Damage 変数を呼び出し、引数に30を渡す
myPlayer.Damage(30);
出力結果
50のダメージを与えた
30のダメージを受けた
その他
参考書籍