けいごのなんとか

Unityユーザーとしてのブログ。ギリギリ路線走ってます。

SceneModeUtilityについて

これはドキュメント化されていないもの

GetObjects

public static GameObject[] GetObjects (Object[] gameObjects, bool includeChildren)
引数名 説明
gameObjects 検査するGameObject
includeChildren 子要素を含むかどうか

gameObjectsから関連するGameObjectを取得します。

includeChildrenがfalseの場合はgameObjectsの要素がそのまま返されます。

includeChildrenがtrueの場合は子要素全てのオブジェクトを取得出来ます。

GetSelectedObjectsOfType

public static T[] GetSelectedObjectsOfType<T> (out GameObject[] gameObjects, params Type[] types) where T : Object
引数名 説明
gameObjects TypeからヒットしたGameObject
types 検索したいType

選択状態のGameObjectからtypesに当てはまるもの(コンポーネント)が存在するかどうかをチェックします。

(例) TがTransformでtypesがなしの場合

SceneModeUtility.GetSelectedObjectsOfType<Transform> (out gameObjects);

Transformのコンポーネントを取得して、gameObjectsにはそのTransformがアタッチされているGameObjectが格納されます。

(例) TがObjectでtypesがMeshFilterとTransformの場合

SceneModeUtility.GetSelectedObjectsOfType<Object> (out gameObjects, typeof(MeshFilter), typeof(Transform));

MeshFilterのコンポーネントを取得して、gameObjectsにはそのMeshFilterがアタッチされているGameObjectが格納されます。

ここで注意するのはTransformのコンポーネントは取得できないということです。最初にヒットしたもののみ取得出来ます。

(例) TがObjectでtypesがなしの場合

SceneModeUtility.GetSelectedObjectsOfType<Object> (out gameObjects);

Transformのコンポーネントを取得して、gameObjectsにはそのTransformがアタッチされているGameObjectが格納されます。(これはGetComponent( Object )だとTransformが取得できる仕様のため)

HasChildren

public static bool HasChildren (Object[] gameObjects);
引数名 説明
gameObjects チェックしたいObject

Objectに子要素があるかどうかを返します。

これは、Transform.childCount でチェックを行なっているだけです。

SearchBar

public static Type SearchBar (params Type[] types)
引数名 説明
types 検索したいType

typeによってヒエラルキーにあるGameObjectにフィルターを掛けます。 戻り値は現在検索しているTypeを返します。

既に使われている場所は「Occlusion Window」や「Lightmapping Window」の所

f:id:anchan828:20130429222100p:plain

type = SceneModeUtility.SearchBar (typeof(SphereCollider),typeof(Rigidbody));

f:id:anchan828:20130429222059p:plain

SearchForType

public static void SearchForType (Type type)
引数名 説明
type 検索したいType

検索したいTypeを指定すると、ヒエラルキーの上部にあるSearchFieldで検索が行われます。

SceneModeUtility.SearchForType (typeof(SphereCollider));

f:id:anchan828:20130429225907p:plain

SetStaticFlags

public static void SetStaticFlags (Object[] gameObjects, int changedFlags, bool flagValue)
引数名 説明
gameObjects StaticFlagを設定するGameObject
changedFlags 設定したいStaticFlag。通常はStaticEditorFlagsを使用するようにする
flagValue trueの場合チェックが付く。falseの場合はチェックが外れる
SceneModeUtility.SetStaticFlags (Selection.gameObjects, (int)StaticEditorFlags.BatchingStatic, true);