主にプログラミング関連のメモ帳 ♪(✿╹ヮ╹)ノ
書いてあるコードは自己責任でご自由にどうぞ。記事本文の無断転載は禁止です。
2020/05/06
Prefab の設定を楽にしたくて、エディター拡張を作ったのですが、
もはや Prefab を Hierarchy に移すのさえ面倒だったのでやり方を調べました。
前提環境は以下の通りです :
動作としては、以下のような流れになります。
この記事では、 1 ~ 3 までを書きます。
まずは Prefab の GameObject を取得する必要があるのですが、
UnityPackage などで配布する場合、 Path は変更される可能性があるので、
アセットの GUID からアクセスを試みます。
アセットの GUID は .meta
の guid
フィールドに書かれている値です。
コードとしては以下のような感じで GameObject を取得できます。
private const string Guid = "c60b79bdc1de7d247b272b70086e6580";
private static void GetPrefab()
{
var path = AssetDatabase.GUIDToAssetPath(Guid);
return AssetDatabase.LoadAssetAtPath<GameObject>(path);
}
次は、これを Hierarchy に設置します。
private static GameObject ToHierarchy(GameObject prefab)
{
return (GameObject) PrefabUtility.InstantiatePrefab(prefab)
}
第 1 引数の prefab
には先ほど取得した GameObject を渡します。
戻り値には、 Hierarchy での Prefab のインスタンスが返されます。
最後に、これを Unpack してあげます。
private static void UnpackPrefab(GameObject prefab)
{
PrefabUtility.UnpackPrefabInstance(prefab, PrefabUnpackMode.Completely, InteractionMode.AutomatedAction);
}
これだけで、最初の流れができます。
ということで、メモでした。