テラシュールブログ

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

【Unity】指定のプレハブやテクスチャが、どのシーンのどのオブジェクトで使用されているのかを見つける

プロジェクト内で使用しているテクスチャやメッシュが何処で使われているのかを追跡する方法です。

目次

どのシーンで使用されているかを探す

どのシーンで使用されているかを探すには、ReferenceViewerを使用します。このアセットは、該当のアセットを使用しているアセットを逆算的に表示してくれるアセットです。 アセットを選択し右クリック > Find Reference In Projectで該当のアセットを使用しているアセットを一覧表示します。

f:id:tsubaki_t1:20150902003116p:plain

どのオブジェクトがアセットを使用しているかを探す

refを使います。 ref:ファイルパスのような形で記述すると、該当のファイルを参照しているGameObjectを見つけてきます。この機能が凄いのはGameObjectやコンポーネントが該当のアセットを直接参照していない場合でも、参照しているオブジェクトを見つけてくる事です。

例えば、TextureがTextureAtlasに参照され、TextureAtlasがAnimationClipに参照され、AnimationClipがAnimatorControllerに参照され、AnimatorControllerがAnimatorに参照され、AnimatorがGameObjectに参照される、そんな深い参照関係でも、使用しているオブジェクトを一覧としてHierarchyに表示します。

f:id:tsubaki_t1:20150902001656p:plain

ref検索を一発で行う

しかし正直パスを入力するのは面倒です。その時はアセットを右クリックし「Find Reference In Scene」を選択します。それでシーン内のどのオブジェクトが該当のファイルを参照しているかが分かります。 f:id:tsubaki_t1:20150902002449p:plain このシーン内検索はコンポーネント等にも使用できます。なので、該当のコンポーネントを持つオブジェクトがどれなのか分からなくなった場合、この機能を使用して検索をかけることが出来ます。

どのコンポーネントがアセットを使用しているかを探す

アセットではなくオブジェクト単位で確認したい場合はProfilerを使用します。

  1. 該当のオブジェクトを参照しているシーンを再生
  2. Profilerを開く
  3. シーンを一時停止
  4. ProfilerのMemoryを選択し、SimpleからDetails(詳細)へ変更
  5. Take Sample Editorをクリック
  6. Assetsのアセットのカテゴリ(今回はTexture2D)の、
    該当のアセットを探す
  7. アセットを参照しているオブジェクトを追跡する

f:id:tsubaki_t1:20150902010224g:plain

この画面の見方ですが、「該当のオブジェクトを参照しているオブジェクト」を下の階層に表示しています。

  1. Texture2D(アセット)を参照しているのが、スプライト(パーツを切り出してテクスチャを参照)   f:id:tsubaki_t1:20150902011440p:plain
  2. スプライトを参照しているのがAnimationClipのRoboBoyIdle
    f:id:tsubaki_t1:20150902011500p:plain
  3. AnimationClipを参照しているのが、Idleという名前のAnimatorState
    f:id:tsubaki_t1:20150902011526p:plain
  4. AnimatorStateを持っっているのが、Base Layer…AnimatorStateMachineのレイヤー
    f:id:tsubaki_t1:20150902011555p:plain
  5. BaseLayerを持っているのが、AnimatorController。名前は2dCharacterAnimator
    f:id:tsubaki_t1:20150902011650p:plain
  6. で、AnimatorControllerを持っているのがAnimator、それを持っているのがGameObjectのCharacterRobotBoy…となる訳です。
    f:id:tsubaki_t1:20150902011921p:plain

これで、指定のTextureを使用しているコンポーネントが何なのか追えます。

多分続きます。