橋本翼(ツバサムス)

メタバースプログラマー。
UnityとUnreal Engineを専門的に扱う。
メタバース系スタートアップ企業に所属。

詳細はこちら

【UnityC#基礎講座⑤】引数・返り値・クラス

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をコピーしました