【Unity基礎講座⑤】引数/返り値/クラス

Unity

引数/返り値/クラス

引数あり、返り値なしのメソッド

コード

void CallName(string name)
{
  Debug.Log("Hello "+ name);
}

CallName("Tom");

出力結果

Hello Tom

説明

Unityの教科書

引数と返り値のあるメソッド

コード

int Add(int a,int b)
{
  int c = a + b;
  return c;
}

int answer;
answer = Add(2,3);
Debug.Log(answer);

出力結果

5

説明

Unityの教科書

クラス

概要

メソッドは「処理をまとめた物」だったが、クラスは「メソッドと変数をまとめた物」である。

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 変数が持つメンバメソッド(メンバ変数)を使用できる。

この先「.」で繋がった記述がたくさん出てくるが、「○○.××」を見たら「○○クラスが持つ××メソッド(変数)を使っている」と理解しておくと良いだろう。

イラスト

Unityの教科書
Unityの教科書

クラスの作成

コード

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のダメージを受けた

その他

参考書籍


お問い合わせ

    タイトルとURLをコピーしました