topaz-dev’s

ああああああ

スクリプトからプレファブを生成する。

エディタ拡張などでプレファブを作成する時のメモ。
ゲームオブジェクトを生成してからコンポーネントを追加する。最後にプレファブとしてアセットをセーブする。
最後に生成したゲームオブジェクトを削除する。削除しないとシーン上に残ったままになっている。プレファブとして保存されているため削除しても問題はない。

private void CreatePrefab()
    {
        GameObject obj = new GameObject();
        obj.AddComponent<BoxCollider2D>();
        PrefabUtility.SaveAsPrefabAsset(obj, "Assets/_PuzzleData/Sample001.prefab");
        DestroyImmediate(obj);
    }

注意点としては、保存するアセットのパスはAssets/から始まり、.prefabで終わること。
同じパスにすでにプレファブが存在していた場合無条件で上書きされてしまう点のも気をつけた方が良い。

まとめ

スクリプトからプレファブを生成することができた。
エディタ拡張などで便利に生成までのフローが作れると開発速度があがりそう。