メソッドの最後には必ず () が付きます。
これは引数(ひきすう)と呼ばれる機能です。
ここには各メソッドごとに設定があり、メソッドの機能を使う際に利用される情報を書いておく場所になります。
Start や Update のように、引数の設定がないものもあり、その場合であっても、メソッドであることを示すため、() がついています。
Instantiate メソッドにおいては、この() の中に、複製したいゲームオブジェクトの
情報が代入されている変数を指定することによって、プレハブのゲームオブジェクトの複製を1つ、生成することが出来ます。
サンプルコードを提示します。
public GameObject prefab; // <- 変数名は任意です
void Start () { // <- 最初の文字が大文字で、最後に () がつくのでメソッドです。
Instantiate(prefab);
}
Instantiate メソッドの () に、prefab 変数を指定しています。
この Instantiate メソッドが実行されると、prefab 変数に代入されているプレハブのゲームオブジェクトの複製が1つ、生成されます。
よって、スクリプトと、プレハブを利用することにより、
ゲーム実行中に、動的にゲームオブジェクトを生成することができる、ということになります。
また同じメソッドでありながら、引数の指定方法が複数用意されているメソッドがあります。
これを引数のオーバーロードといい、同じメソッドですが、引数の指定によって、プログラムが自動的にどの処理を行うかを判断します。
Instantiate メソッドには、引数の指定方法が5種類用意されています。
先ほどの記述の他にも、引数の指定方法を変えて書くことが出来ます。
void Start () {
Instantiate(prefab, transform);
}
この記述では、第1引数だけではなく、第2引数に Transform 型を指定している書式です。
void Start () {
Instantiate(prefab, transform.position, Quaternion.Identity);
}
こちらの記述では、第1引数から第3引数まであり、第2引数には Vector3 型、第3引数には Quaternion 型を指定しています。
このようにメソッドには、同じメソッド名であっても引数の指定方法が複数用意されているメソッドが多く用意されています。
この引数のオーバーロードについて理解した上で、どの書式で記述をすれば効果的な処理になるかを考えていくことになります。