この記事でのバージョン
Unity 5.4.0f3
はじめに
今回はインスタンスから元のPrefabを取得する方法のご紹介です!
ちょっと分かりにくいかもしれませんが、ようはHierarchy上で右クリックをし、
Select prefabを実行した時の動作をプログラムで行いたいという事です。
なお、エディタ上でのみの方法なのでご注意を。
GetPrefabParent
インスタンスから元のPrefabを取得するには、PrefabUtility.GetPrefabParentを使います。
指定したソースからインスタンス化したプレハブアセットオブジェクトを取得します。
実際のコードは以下の通りです。
//PrefabUtilityを使うにはusing UnityEditor; が必要
Object prefab = PrefabUtility.GetPrefabParent (gameObject);
なお、GetPrefabParentの引数はObjectなのでGameObjectでなくとも大丈夫です。
また、prefabが存在しない場合はnullが返されます。
GetAssetPath
余談ですが、プレハブのパスを知りたい場合はAssetDatabase.GetAssetPathを使います。
Object prefab = PrefabUtility.GetPrefabParent (gameObject);//Prefabを取得 string path = AssetDatabase.GetAssetPath (prefab);//Prefabのパスを取得
なお、取得できるパスはAssetsからのパス&拡張子付きです。