読者です 読者をやめる 読者になる 読者になる

(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

インスタンスから元のPrefabを取得する【Unity】


このエントリーをはてなブックマークに追加

この記事でのバージョン
Unity 5.4.0f3


はじめに

今回はインスタンスから元のPrefabを取得する方法のご紹介です!


ちょっと分かりにくいかもしれませんが、ようはHierarchy上で右クリックをし、

Select prefabを実行した時の動作をプログラムで行いたいという事です。


f:id:kan_kikuchi:20160825133926g:plain


なお、エディタ上でのみの方法なのでご注意を。


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からのパス&拡張子付きです。