【Unity&C#】メソッドの説明と使い方【基本知識】

前回の配列の説明と使い方はどうでしたか。まあ変数が横一列につながったものです。

今回はメソッドを説明していきます。ひとことでいうと、スクリプトが見えやすくなり、呼びたい機能をいつでも呼べるようになります。

目次

長い処理を意味のまとまりごとに分解したそれぞれの処理のことをメソッド

これまで通りに「Startメソッド」の中にスクリプトをだらだらと書いても、見にくいし、どこになんの処理があるのかわからない状況におちいることもしばしばあります。

そこで登場するのがメソッドです。長い処理を意味のまとまりごとに分解したそれぞれの処理のことをメソッドといいます。

えっと、言葉だけではむずかしい。

簡単にいうと「処理をまとめたもの」です。スクリプトが見えやすくなり、いつでもその処理を呼び出すことができます。

スクリプトで説明します。

メソッドなし

Test

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Test : MonoBehaviour
{

         // Use this for initialization
         void Start()
         { 
             int[] points = { 10, 11, 12, 13 };

            Debug.Log(points[0]);
            Debug.Log(points[[1]]);
            Debug.Log(points[[2]]);
            Debug.Log(points[[3]]);
          }

        // Update is called once per frame
        void Update()
         {

         }
}

メソッドあり

Test

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Test : MonoBehaviour
{

         void Hello()
        {
              Debug.Log("Hello");
         }

        void Sorry()
        {
              Debug.Log("Sorry");
        }

        void GoodMorning()
        {
               Debug.Log("GoodMorning");
        }

        void GoodNight()
        {
              Debug.Log("GoodNight");
        }

        void Thank()
        {
              Debug.Log("Thank");
        }

         // Use this for initialization
         void Start()
         { 
               Hello();
               Sorry();
               GoodMorning();
               GoodNight();
               Thank();
          }

        // Update is called once per frame
        void Update()
         {

         }
}

結果はどちらも「Hello,Sorry,GoodMorning,GoogNight,Thank」が表示されます。

長い処理を意味のまとまりごとに分解したそれぞれの処理のことをメソッド

長い処理を意味のまとまりごとに分解したそれぞれの処理のことをメソッドといいます。

         void Hello()
        {
              Debug.Log("Hello");
         }

この部分を「Hello」メソッドといいます。

               Hello();

これで「Hello」メソッドを呼び出しています。メソッドは呼び出すことで使うことができます。

これで長い処理をStartメソッドに書かなくて済みますね。

引数・戻り値の説明

C#での引数と戻り値

メソッドに渡す値を引数(ひきすう)
メソッドから返ってくる値を返り値
といいます。

C#での返り値と引数

翻訳で例えるとこんな感じです。翻訳機に桃といれると、Peachと帰ってきます。桃を引数、Peachを返り値といいます。

引数は複数個渡せますが、返り値は1つだけということが決まっています。覚えておいてください。

引数が返り値もないメソッドもあります。

メソッドには3種類ある

  • 引数と返り値がなしメソッド
  • 引数のあるメソッド
  • 引数と返り値があるメソッド

種類といっていいのかわかりませんが、3種類あります。

スクリプト例に説明していきます。

引数と返り値がなしメソッドの作り方・呼び出し方

引数と返り値がなしメソッドの作り方

void メソッド名()

「void」は返り値がないことを表します。「()」の中になにも入っていないことは引数がないことを表しています。

引数と返り値がなしメソッドの呼び出し方

メソッド名();

これでメソッドを呼び出せます。

スクリプト例

Test
 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Test : MonoBehaviour
{
     //メソッド作成
     void Hello()  
     {
         Debug.Log("Hello");
     }

    // Use this for initialization
    void Start()
     {
          Hello();    // メソッド呼び出し
     }

    // Update is called once per frame
     void Update()
     {

    }
}

void メソッド名() 引数と返り値なしメソッドの作り方
メソッド名(); 引数と返り値なしメソッドの呼び出し方

結果はConsoleに「Hello」と表示されます。

    // メソッド作成
     void Hello()  
     {
         Debug.Log("Hello");
     }

でメソッドを作っています。引数と返り値なしでメソッド名は「Hello」です。

    void Start()
     {
           Hello();    // メソッド呼び出し
     }

ここでゲーム開始時に「Hello」メソッドを呼び出しています。

メソッドは何度も呼び出せる

Test
 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Test : MonoBehaviour
{
     // メソッド作成
     void Hello()  
     {
         Debug.Log("Hello");
     }

    // Use this for initialization
    void Start()
     {
         Hello();    // メソッド呼び出し
         Hello();    // メソッド呼び出し

     }

    // Update is called once per frame
     void Update()
     {

    }
}

    void Start()
     {
         Hello();    // メソッド呼び出し
         Hello();    // メソッド呼び出し

     }

このようにすると「Hello」メソッドを二回呼び出すことができます。つまりConsoleに二回「Hello」と表示されます。

メソッドはいつでも必要なときに呼び出すことができます。重要なことなので覚えておいてください。

引数のあるメソッドの作り方・呼び出し方

引数のあるメソッドの作り方

void メソッド名(型 引数)

「void」は返り値がないことを表します。引数がある場合は(型名 変数名)を書く必要があります。

1つだけでなく、複数設定できます。

引数のあるメソッドの呼び出し方

メソッド名(引数);

これでメソッドを呼び出せます。メソッドに渡す値は変数のときに説明した型にしたがいます。

スクリプト例

Test

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Test : MonoBehaviour
{
    // メソッド作成
    void Hello(int age)
    {
        Debug.Log("こんにちは、" + age + "才のさぎのみやです。");
    }

    // Use this for initialization
    void Start()
    {
        Hello(30);  // メソッドの呼び出し方   
    }

    // Update is called once per frame
    void Update()
    {

    }
}

void メソッド名(型 引数) 引数のあるメソッドの作り方
メソッド名(引数); 引数のあるメソッドの呼び出し方

結果はConsoleに「こんにちは、30才のさぎのみやです。」と表示されます。「+」記号で文字列を連結できましたよね。忘れてしまった方は文字列の連結と数値と文字列の連結しよをごらんください。

    // メソッド作成
    void Hello(int age)
    {
        Debug.Log("こんにちは、" + age + "才のさぎのみやです。");
    }

これでメソッドを作っています。

        Hello(30); // メソッドの呼び出し方   

これでメソッドを呼び出しています。「30」は引数となり、メソッドに渡されます。

Hello(30);」→「Hello("ABC");」のようにしてはいけません。型が合わないからです。

引数と返り値があるメソッドの作り方・呼び出し方

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

型 メソッド名(型 引数,型 引数)

引数が複数あれば「(型 引数,型 引数)」の部分に追加します。

引数と返り値があるメソッドの呼び出し方

メソッド名(引数,引数);

これでメソッドを呼び出せます。

スクリプト例

Test

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Test : MonoBehaviour
{
    // メソッド作成
    int Points(int a,int b)
    {
        int c;         // 変数宣言
        c = a + b;  // 計算
        return c;    // メソッドの呼び出しもとへ返す
    }

    // Use this for initialization
    void Start()
    {
        int sum;                        // 変数宣言
        sum = Points(90, 80);    // 引数を渡す
        Debug.Log(sum);    
    }

    // Update is called once per frame
    void Update()
    {

    }
}

型 メソッド名(型 引数,型 変数) 引数と返り値があるメソッドの作り方
メソッド名(引数,引数); 引数と返り値があるメソッドの呼び出し方

結果はConsoleに「170」が表示されます。

    // メソッド作成
    int Points(int a,int b)
    {
        int c;         // 変数宣言
        c = a + b;  // 計算
        return c;    // メソッドの呼び出しもとへ返す
    }

ここでメソッドを作成しています。引数は2つですね。「return 変数名;」を書くことによって、メソッドの呼び出しもとへ返すことができます。

返り値を使うには必須のことなので覚えておいてください。

        int sum;                       // 変数宣言
        sum = Points(90, 80);   // 引数を渡す
        Debug.Log(sum);    

Points(90, 80);  」で引数を渡しています。「int Points(int a,int b)」の

a = 90
b = 80

が入ります。もし「Points(80, 90);  」とした場合

a = 80
b = 90

が入ります。順番どおりに数値が入っています。

●引数と返り値の考え方

引数を渡す→メソッド内で処理→返り値が求められる→引数を渡す部分が返り値に置換

この例だと

80 90の渡す→メソッド内で処理→返り値170が求められる→Points(90, 80)の部分が170に置換

です。

一番は自分でスクリプトを実行してみることがわかりやすいです。ぜひ、やってみてください。

まとめ

  • メソッドは処理をまとめたものでいつでも呼ぶことができるもの
  • メソッドに渡す値を引数(ひきすう)
  • メソッドから返ってくる値を返り値
  • メソッドは呼び出すことで使える
  • 引数と返り値がないメソッド、引数があるメソッド、引数と返り値があるメソッドがある

●引数と返り値がないメソッド

void メソッド名() 引数と返り値なしメソッドの作り方
メソッド名(); 引数と返り値なしメソッドの呼び出し方

●引数があるメソッド

void メソッド名(型 引数) 引数のあるメソッドの作り方
メソッド名(引数); 引数のあるメソッドの呼び出し方

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

型 メソッド名(型 引数,型 変数) 引数と返り値があるメソッドの作り方
メソッド名(引数,引数); 引数と返り値があるメソッドの呼び出し方

では次のクラス・インスタンスの説明と使い方にいきましょう。

あわせて読みたい
【Unity&C#】クラス・インスタンスの説明と使い方【基本知識】 前回のメソッドの説明と使い方はどうでしたか。 今回はクラスの説明です。クラスは簡単にいうと設計図です。その設計図には関係のある変数とメソッドがまとめられていま...
C#でのメソッドの説明と作り方

この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次