補足:自前のメソッド
・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のどれか