講義メモ 後半

補足:自前のメソッド

・Unityのスクリプトでは、MonoBehaviourを継承しているクラスの中に自由にメソッドを記述できる
・そして、Start()メソッドやUpdate()メソッドの中から呼び出すことができる
・あるいは、自前のメソッドの中で自前のメソッドを呼び出すこともできる
・定義書式: 戻り値型 メソッド名(引数の型 引数名, …) {処理内容}
・なお、戻り値がない場合は戻り値型を「void」とする(無の意味)
・引数がない場合はカッコの中は不要だが、カッコは必要
・例: void Greet() { Debug.Log("処理開始"); } //開始表示をする自前のメソッド
・定義しただけでは動作しないので、呼び出す必要がある
・呼び出し書式: メソッド名(引数, …)
・なお、戻り値がある場合、呼び出しをDebug.Log()の中で行うと、戻り値を表示できる。
 呼び出しを式の中で行うと、戻り値が式に渡される。
・引数がない場合はカッコだけを書く(使わない引数を書くとエラー)

ミニ演習 mini060a.cs

・開始表示をする自前のメソッドをStartメソッドの上または下に記述する
    void Greet() { 
        Debug.Log("処理開始"); 
    }
・Startメソッドでこれを呼び出してみよう

作成例

using UnityEngine;

public class mini060a : MonoBehaviour {
    void Greet() { //自前のメソッドGreet()の定義
        Debug.Log("処理開始"); 
    }
    void Start() {
        Greet(); //自前のメソッドGreet()を呼ぶ
    }
}

ミニ演習 mini060b.cs

・int型の引数を2つ渡すと和を表示する自前のAdd2メソッドをStartメソッドの上または下に記述する
・Startメソッドでこれを呼び出してみよう

作成例

using UnityEngine;

public class mini060b : MonoBehaviour {
    void Add2(int a, int b) { //自前のメソッドAdd2(int,int)の定義
        Debug.Log(a + b); //和を表示
    }
    void Start() {
        Add2(10, 20); //自前のメソッドAdd2()に2引数を渡して呼ぶ
    }
}

補足:自前のメソッド:戻り値の返し方

・戻り値のメソッドでは「return 式または値;」を最後に必ず実行する必要がある。
・この式または値の型と、メソッドの戻り値型を合わせるのが基本。
・例: string Greets() { return "やあ"; } //文字列「やあ」を返すメソッド

ミニ演習 mini060c.cs

・int型の引数を2つ渡すと和を返す(表示しない)自前のAddメソッドをStartメソッドの上または下に記述する
・Startメソッドでこれを呼び出して、戻り値を表示しよう

作成例(動作順序説明バージョン)

using UnityEngine;

public class mini060c : MonoBehaviour {
    int Add(int a, int b) { //自前のメソッド int Add(int,int)の定義
        return a + b; //③和を返す
    }
    void Start() {
        int r; //①戻り値を格納する為の変数
        r = Add(10, 20); //②Add()に2引数を渡して呼び、④戻り値を代入
        Debug.Log(r); //⑤戻り値を表示
    }
}

作成例(短縮バージョン)

using UnityEngine;

public class mini060c : MonoBehaviour {
    int Add(int a, int b) { //自前のメソッド int Add(int,int)の定義
        return a + b; //②和を返す
    }
    void Start() {
        Debug.Log(Add(10, 20)); //①引数を渡してAddを呼び、③戻り値を得て表示
    }
}

補足:自前のメソッド:オーバーロード

・自前のメソッドでもオーバーロード(同じ名前のメソッドに型や個数&順序が異なる引数を与えると動作を変えられること)が可能。
例:
    int Add(int a, int b) { return a + b; }
    double Add(double a, double b) { return a + b; }
・ただし、戻り値型のみが異なるメソッドはオーバーロードにはならず、定義すると文法エラーになる
・引数の数や並び順が異なるオーバーロードも可能
例:
    int Add(int a, int b, int c) { return a + b + c; }
    int Add(int a, double b) { return a + (int)b; }
    int Add(double a, int b) { return (int)a + b; }

ミニ演習 mini060d.cs

・上記の5つのメソッドを全て定義するとどうなるか確認しよう
 この時、どれが呼ばれたか分かるように「Debug.Log」で適当な文字列を表示しよう
・Startメソッドで5つ全てを呼び出して、結果を確認しよう

作成例

using UnityEngine;

public class mini060d : MonoBehaviour {
    int Add(int a, int b) { //自前のメソッド①int Add(int,int)の定義
        Debug.Log("①int Add(int,int)が呼ばれた");
        return a + b; //整数和を返す
    }
    double Add(double a, double b) { //自前のメソッド②double Add(double,double)の定義
        Debug.Log("②double Add(double,double)が呼ばれた");
        return a + b; //実数和を返す
    }
    int Add(int a, int b, int c) { //自前のメソッド③int Add(int,int,int)の定義
        Debug.Log("③int Add(int,int,int)が呼ばれた");
        return a + b + c; //整数の総和を返す
    }
    int Add(int a, double b) { //自前のメソッド④int Add(int,double)の定義
        Debug.Log("④int Add(int,double)が呼ばれた");
        return a + (int)b; //整数と整数化した実数の和を返す
    }
    int Add(double a, int b) { //自前のメソッド⑤int Add(double,int)の定義
        Debug.Log("⑤int Add(double,int)が呼ばれた");
        return (int)a + b; //整数化した実数と整数の和を返す
    }
    void Start() {
        Debug.Log(Add(10, 20)); //引数を渡してAdd①を呼び、戻り値を得て表示
        Debug.Log(Add(3.14, 20.5)); //引数を渡してAdd②を呼び、戻り値を得て表示
        Debug.Log(Add(10, 20, 30)); //引数を渡してAdd③を呼び、戻り値を得て表示
        Debug.Log(Add(10, 3.14)); //引数を渡してAdd④を呼び、戻り値を得て表示
        Debug.Log(Add(3.14, 100)); //引数を渡してAdd⑤を呼び、戻り値を得て表示
    }
}

提出:ミニ演習 mini060a/b/c/d.csのどれか

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です