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

テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

【Unity】シーン再生中にオブジェクトを調整し、シーン再生終了時も調整内容を保持する

Unity エディタ拡張・エディタ機能

f:id:tsubaki_t1:20151021235733p:plain

今日のセミナーでチラっと話した「Unityでシーン再生中にオブジェクトを調整し、シーン終了時も調整内容を保持する方法」について書きます。

やり方

これ、やっていることは非常に単純で、シーン内のオブジェクト情報をPrefabとして上書き出力しているだけです。

 

まずは普通のシーンがあったとして、このシーン内の調整を行いたいオブジェクトをPrefabとして書きだします。

今回の場合はCameraを書き出します。

f:id:tsubaki_t1:20151022110005j:plain

カメラの内容を更新し、あとは元々のPrefabをシーン内のオブジェクトで上書き更新します。

f:id:tsubaki_t1:20151022110353j:plain

これでゲームを終了した後も変更が保持されます。f:id:tsubaki_t1:20151022110514p:plain

Prefabとして残したくない場合は、この手順の後メニューのGameObject>BerakPrefabInstanceでプレハブとインスタンスの接続を解除してから作成したプレハブを破棄します。

 

Prefabの機能は色々ありますが、本質は「シーン上にあるメタデータをファイルとして出力する」事です。

なので、オブジェクトを事前にPrefabとして配置しておき、実行時にPrefabを調整しアセットとして上書き保存してやれば、シーンの再生時にオブジェクトを編集しても編集結果を維持できる訳です。

これなら普通に「Prefabを直接操作すれば」と思う処もありますが、階層が深いオブジェクトの調整等は若干面倒くさいのと、画面を見ながら調整した方が楽っていう理由があります。

なお、例外として「プレハブのルートオブジェクトのTransform」は変更が反映されません。これは「PrefabのRootは常にユニークな値であることが想定されている」為だと思われます。

関連

tsubakit1.hateblo.jp

tsubakit1.hateblo.jp

tsubakit1.hateblo.jp