なつねこメモ

主にプログラミング関連のメモ帳 ♪(✿╹ヮ╹)ノ 書いてあるコードは自己責任でご自由にどうぞ。記事本文の無断転載は禁止です。

Unity でスクリプトから Prefab Variant を作成したい

Prefab Variant 、便利ですよね。
今回はそれをスクリプト経由で作成する方法の紹介です。

といってもそれ専用のメソッドがあるわけでも無く、以下の処理で自動的に作成されます。

var go = (GameObject) PrefabUtility.InstantiatePrefab(_prefabPath);
// こっちでも良い
// var go = (GameObject) PrefabUtility.LoadPrefabContents(_prefabPath);

// なんかいじる
go.GetComponent<MeshRenderer>().sharedMaterials[0] = null;

// 別名で保存すると、 Prefab Variant として保存される
var path = Path.GetFineNameWithoutExtension(_prefabPath);
PrefabUtility.SaveAsPrefabAsset(go, $"{path}_1.prefab");

ということで、メモでした。