引数・返り値・クラス
引数あり、返り値なしのメソッド
コード
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のダメージを受けた
その他
参考書籍
コメント