【Unity】メソッドとは?処理ごとに分割されているまとまりのこと

Unityのメソッドとは? Unity

こんにちは、ともくんのゲーム作り部屋にようこそ!

このページでは、

「Unityでメソッドがどういうものなのか分からない!」

「メソッドの作り方や使い方が知りたい!」

というお悩みの方に向けた内容となっています。

Unityで処理を行う際にスクリプトを書いていきますが、このスクリプトを書く際にメソッドというものが使われます。

このメソッドとは、処理をまとまりごとに分けてメソッド名で管理することができるもので、一度作ったメソッドは何度も呼び出して処理を行うことができます。

そしてメソッドを使うことで、プログラムが読みやすくなり、またプログラムの書く量を短くするというメリットがあります。

そこで、このページでは、Unityのスクリプトを書く際に使われるメソッドについて、どのようなものなのか、またメソッドの作り方や使い方までを紹介していきます。

なお、このページでは、

Windows11
Unity Hub3.11.1
Unity6

のバージョンで解説しています。

この記事を書いた人

ゲーム作りを学び始めた一児のパパです。
このブログは、子供から「ゲームを作ってみたい!」と言われ、非プログラマーでゲーム作りをしたことない僕が、ゲーム作りの本を読んで独学でゲーム開発を学んでいるブログです。
同じように初めてゲーム作りをしている方と一緒に学んでいけるようなブログに出来たらいいなと思っています。
また、「このコードはおかしい」とか「もっと良い書き方があるよ!」などあれば、どんどん指摘して頂けると助かります。

メソッドとは?

まずは、メソッドの特徴やメソッドをどんな時に使うのかを紹介していきます。

処理のまとまりごとに分けているもの

メソッドは、冒頭でも解説した通り、スクリプトの処理をまとまりごとに分けたもののことを呼びます。

例えば、プレイヤーに対してゲーム内で処理を行う際に、

  • プレイヤーの移動処理
  • プレイヤーのダメージ処理
  • プレイヤーの攻撃処理

など、様々な処理を書いていくことになると思います。

スクリプト内でそのまま順番に書いても良いのですが、複雑化して行が増えてくると、どれがどの処理かすぐに分からなくなってしまうことがあります。

そこで、それぞれの処理を分けることで、分かりやすく管理していくのがメソッドというものになっています。

よく使う処理をメソッドで何度も呼び出せる

メソッドを使うことで、管理しやすくなるだけでなく、同じ処理を行う際に簡単に何度も呼び出すことができるようになります。

例えば、ダメージを受ける処理を何度も行うようなゲームの場合、メソッドを使わないとスクリプトに何度も同じ内容を書くことになります。

しかし、一度メソッドを作っておけば、ダメージ処理を書きたいときにそのメソッドを呼び出せば良いだけなので、手間もかからずプログラムも短く書くことができます。

また、処理内容を変更したい場合も、メソッド内の処理を変更すれば済むため、メンテナンスの点でも管理しやすくなります。

Unityではすでに準備されているメソッドがある

Unityでは、すでに良く使われるような処理に対しては、メソッドが準備されています。

例えば、

など、様々なメソッドがあります。

また、新規でスクリプトを作成した際に、必ず書かれているStart()Update()もメソッドになっていて、そこに処理を書くことでゲームが動いています。

Startメソッド ⇒ メソッド内に書かれた処理をゲーム実行と同時に1度行う
Updateメソッド ⇒ メソッド内に書かれた処理をフレームごとに繰り返して行う

そのため、Unityでは様々なメソッドが使われていることを理解しておきましょう。

メソッドの作り方と呼び出し方

ここからは、メソッドの作り方と呼び出し方についてまとめていきます。

メソッドの作り方

メソッドを作る際は、Startメソッド・Updateメソッドと同じ階層に、以下のような形で書いていきます。

返り値の型 メソッド名(引数, 引数,...)
{
	メソッドで実行する処理内容;
	return 返り値;
}

それぞれの項目について、もう少し深く説明していきます。

返り値の型

メソッドを作る際は、初めに返り値の型を書いて作ることになります。

この返り値とは、そのメソッドで処理を行った後に、返してもらう値のことを指します。

例えば、整数の値を返す場合は「int」型、文字列を返す場合は「string」型を書いていきます。

また、返り値が無いメソッドの場合は、「void」型を指定します。

StartメソッドやUpdateメソッドも、返すものは何も無いのでvoid型になっています。

メソッド名

次に、返り値の後ろに管理したいメソッド名を記載していきます。

このメソッド名は、基本的に自分や他の人が見たときに分かりやすい名前にしておくと良いでしょう。

例えば、ダメージの処理なら「Damage」、ゲームオーバーの処理なら「GameOver」のようにメソッド名を書いていきます。

なお、メソッド名は最初の文字を大文字にして、単語の頭文字を大文字とするアッパーキャメルケースで基本的に書いていきます。

引数

引数は、メソッドを呼び出す際に受け取る値となり、この受け取った引数を元に、メソッド内で処理を行っていくことになります。

引数を設定する場合は、メソッド名の後ろで()に挟む形で、「引数の型 変数名」という形で書いていきます。

例えば、int型のHPを引数に設定するなら、

メソッド名(int hp)

と書いてあげて、引数を2つ以上設定する場合は、()内で「,(カンマ)」を使って区切る形で、

メソッド名(int hp, int mp)

という形で、繋げて書いてあげます。

なお、引数を設定しない場合は、

メソッド名()

と、()内を空欄にしてあげれば問題ありません。

メソッドで実行する処理内容

メソッドを呼び出した際に、実際に実行される処理を書いていきます。

例えば、

  • HPを1減少させる
  • 座標を移動させる

などの具体的な処理の部分になります。

また、メソッドで引数を設定している場合は、その引数の変数名を使って処理を書いていくことができます。

返り値

最初の「返り値の型」で、void型以外を指定した場合は、処理の中で返り値を返してあげる必要があります。

この返り値を返す場合は、returnを使って以下のように返り値を指定します。

return 返り値;

上記のようにメソッドの処理の中で返り値を書いてあげることで、メソッドを呼び出した際に返り値が戻ってきます。

なお、返り値は返り値の型と一致させる必要があります。

メソッドの呼び出し方

メソッドを呼び出して実際に処理を行いたい場合は、メソッド名と引数を書いてあげることで、簡単に呼び出すことができます。

メソッド名(引数);

例えば、メソッド名を「Damage」引数を「int型」で設定していた場合は、

Damage(10);

などのように1行書いてあげるだけで、10を引数としてDamageメソッドに書かれた処理が行われ、返り値があれば戻ってきます。

引数を設定していないメソッドの場合は、

Damage();

と書くだけで、メソッドの処理が実行されます。

メソッドの使い方

ここまでメソッドについて解説していきましたが、ここからは簡単な計算例を元にメソッドの使い方を覚えていきましょう。

引数も返り値もないメソッドの使い方

まずは、引数も返り値も無いメソッドの使い方です。

以下は、例として、int型の変数aとbを足した値をcに代入して、コンソールウィンドウに表示させる処理まで行うAnswerメソッドです。

using UnityEngine;

public class Test1 : MonoBehaviour
{
    int a = 5;
    int b = 8;

    void Start()
    {
        Answer();   // メソッドを呼び出している
    }

    void Answer()   // メソッドの処理を定義
    {
        int c = a + b;
        Debug.Log(c);
    }
}
コンソール画面の表示結果

13

13行目で返り値が無いメソッドにvoid型を指定、引数も無いので()と空欄にして、15・16行目でメソッド内で足し算と表示させる処理を書いています。

10行目でメソッドを呼び出す際は、引数無しでメソッドを呼び出してあげることで、処理が実行されます。

引数なし返り値ありのメソッドの使い方

次に、引数は無いけど返り値があるメソッドの使い方です。

以下は、先ほどと似ていますが、返り値としてcの値を戻すという処理を行うメソッドです。

using UnityEngine;

public class Test1 : MonoBehaviour
{
    int a = 10;
    int b = 31;

    void Start()
    {
        int d = Answer();   // メソッドを呼び出して返り値を代入
        Debug.Log(d);
    }

    int Answer()   // int型でメソッドの処理を定義
    {
        int c = a + b;
        return c;   // 返り値の処理
    }
}
コンソール画面の表示結果

41

返り値がint型になるので、14行目でメソッド名の前にintを指定し、17行目の処理の終わりにreturnでcを返すようにしています。

メソッドを呼び出す際は、先ほどと同じく引数が無い形でメソッドを呼び出せば処理が実行されて、返り値が戻されます。

今回は、10行目でその返り値をdに代入して、コンソールウィンドウに表示させるようにしています。

引数も返り値もあるメソッドの使い方

最後に、引数も返り値もある形のメソッドの使い方です。

以下は、引数にint型で2つ設定して、その値を足して戻してくれる処理を行うメソッドです。

using UnityEngine;

public class Test1 : MonoBehaviour
{
    void Start()
    {
        int d = Answer(16, 20);   // 引数に処理したいint型の値を入れて呼び出す
        Debug.Log(d);
    }

    int Answer(int a, int b)   // int型の2つの引数を持つメソッドの処理を定義
    {
        int c = a + b;  // 引数で受け取った値を計算
        return c;   // 返り値の処理
    }
}
コンソール画面の表示結果

36

13・14行目で引数に設定したaとbをメソッド内で足して、その値をreturnで戻す処理を書いています。

7行目でメソッドを呼び出す際は、引数に2つの整数(int型)を指定してあげることで、足し上げた数が返り値で戻るように処理されてきます。

先ほどと同じく、その値をdに代入してコンソールウィンドウに表示させています。

まとめ

このページでは、Unityでスクリプトを書く際に使うメソッドについて、どんなものなのか、またメソッドの作り方や使い方をまとめていきましたが、いかがでしたでしょうか?

メソッドとは、処理をまとまりごとに分けたもので、プログラムが読みやすく、かつ短くなるというメリットがあります。

また、メソッドを作っておくことで、何度も行うような処理をすぐに呼び出すことができます。

そのため、Unityでゲームを作る際に、何度も使うような処理はできるだけメソッドで管理しておくようにしましょう。

最後までお読みいただきまして、ありがとうございました!

コメント