コガネブログ

平日更新を目標にUnityやC#、Visual Studioなどのゲーム開発アレコレを書いていきます

【Unity】Instantiate関数を綺麗に記述するためのラッパークラス

var character1 = Instantiate(prefab) as GameObject;
var character2 = Instantiate(prefab, position, Quaternion.identity) as GameObject;

Instantiate関数でプレハブからゲームオブジェクトを生成する時に
毎回生成したオブジェクトをGameObject型にキャストしていたことと
位置だけを設定したいので角度の引数にQuaternion.identityを渡していたことが手間だったので

public static partial class GameObjectCommon
{
    public static GameObject Instantiate(Object original)
    {
        return GameObject.Instantiate(original) as GameObject;
    }

    public static GameObject Instantiate(GameObject original, Vector3 position)
    {
        return GameObject.Instantiate(original, position, Quaternion.identity) as GameObject;
    }
    
    public static GameObject Instantiate(GameObject original, Vector3 position, Quaternion rotation)
    {
        return GameObject.Instantiate(original, position, rotation) as GameObject;
    }
}

このようなクラスを作成して

var character1 = GameObjectCommon.Instantiate(prefab);
var character2 = GameObjectCommon.Instantiate(prefab, position);

このようにシンプルに書けるようにしています