Unity++blog.

UnityやC#とかについて学習したことを書いてます

指定したコンポーネントを持ったオブジェクトをすべて取得する

指定したコンポーネントを持ったオブジェクトをすべて取得する記事です。

このようなクラスを作成した理由は、細かいサウンド管理の為にプロジェクト途中からAudioMixerを導入したので、Audiosourceを持ったオブジェクトを探す必要があったためです。オブジェクトやシーンの数が少ないと手動で探せばいいですが、数が多いと漏れがあったりそもそも把握をしていないからです。

 

下記スクリプトを作成して、どこか適当なvoid startで

SerchComponent.TostringAllTypeofObjectInScene<AudioSource>();

をすると該当オブジェクトの名前がログに書き出されます。

MonoBehaviourを継承していないので、ゲームオブジェクトへアタッチしなくても大丈夫です。

 

取得したいコンポーネントの指定は上の使用例の<AudioSource>のところへ取得したい型を入れて指定します。また、使うかもしれないのでオブジェクトの配列を返すメソッドもついています。

 

 

開いているシーンの中から探すので、すべてのシーンの中からオブジェクトを探したい場合は、下図のようにすべてのシーンをドラッグでHierarchyへ入れてあげて、どこかのシーンでSeachComponentクラスを呼び出せばすべてのシーンへ適用されました。

f:id:nabesi777:20190521232901p:plain

 

またTipsですが、Shiftを押しながらシーンを選択して

f:id:nabesi777:20190521233025p:plain

 

UnloadSceneやRemoveSceneをすることができます。

f:id:nabesi777:20190521233131p:plain