【Unity】Instantiate()メソッドのオーバーロード

Instantiate() メソッドには、複数のオーバーロードが用意されています。以下に代表的なものをいくつか紹介します。

オーバーロード (overload) とは

オーバーロード (overload) とは、同じ名前のメソッドや関数を複数定義し、引数の種類や数を変えて使い分けることです。
UnityのInstantiate()メソッドには、以下のようなメソッドが用意されています。

種類

GameObject Instantiate(GameObject original, Transform parent = null)

引数の original に指定されたプレハブを、parent に指定された transform の子としてインスタンス化します。parent が null の場合、インスタンス化されたオブジェクトはルートオブジェクトとなります。

public class ExampleScript : MonoBehaviour
{
    public GameObject prefab;

    void Start()
    {
        // prefab を親オブジェクトの子としてインスタンス化する
        GameObject childObject = Instantiate(prefab, transform);
    }
}

GameObject Instantiate(GameObject original, Vector3 position, Quaternion rotation, Transform parent = null)

public class ExampleScript : MonoBehaviour
{
    public GameObject prefab;

    void Start()
    {
        // prefab を指定した位置と回転でインスタンス化する
        GameObject childObject = Instantiate(prefab, new Vector3(0, 0, 0), Quaternion.identity, transform);
    }
}

引数の original に指定されたプレハブを、position と rotation に指定された位置と回転でインスタンス化します。parent に指定された transform の子としてインスタンス化することもできます。

T Instantiate<T>(T original, Transform parent = null) where T : Object

public class ExampleScript : MonoBehaviour
{
    public Rigidbody prefab;

    void Start()
    {
        // prefab を親オブジェクトの子としてインスタンス化する
        Rigidbody childObject = Instantiate(prefab, transform);
    }
}

引数の original に指定されたオブジェクトを、parent に指定された transform の子としてインスタンス化します。T はインスタンス化されるオブジェクトの型を指定します。

T Instantiate<T>(T original, Vector3 position, Quaternion rotation, Transform parent = null) where T : Object

public class ExampleScript : MonoBehaviour
{
    public Light prefab;

    void Start()
    {
        // prefab を指定した位置と回転でインスタンス化する
        Light childObject = Instantiate(prefab, new Vector3(0, 0, 0), Quaternion.identity, transform);
    }
}

引数の original に指定されたオブジェクトを、position と rotation に指定された位置と回転でインスタンス化します。parent に指定された transform の子としてインスタンス化することもできます。

これらのオーバーロードを使用することで、より細かい設定を行うことができます。例えば、2つ目のオーバーロードを使用して、インスタンス化されるオブジェクトの位置と回転を直接指定することができます。また、3つ目と4つ目のオーバーロードは、ジェネリックメソッドを使用しており、プレハブだけでなく、すべての UnityEngine.Object サブクラスのオブジェクトをインスタンス化することができます。

Unity,学習

Posted by hidepon