コガネブログ

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

【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);

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

関連記事