方法1
using System.Linq; using UnityEngine; ... var list = Resources .FindObjectsOfTypeAll<GameObject>() .Where( c => c.scene.isLoaded ) .Where( c => c.hideFlags == HideFlags.None ) ;
こちらの方法の場合、すべてのゲームオブジェクトを取得できますが、
ゲームオブジェクトの並びは順不同になります
方法2
using System.Linq; using UnityEngine; ... var list = GameObject .FindObjectsOfType<GameObject>() .Where( c => c.hideFlags == HideFlags.None ) .Where( c => c.transform.parent == null ) .SelectMany( c => c.GetComponentsInChildren<Transform>( true ) ) .Select( c => c.gameObject ) ;
こちらの方法の場合、ルートに存在するゲームオブジェクトが非アクティブの場合、
そのゲームオブジェクトと子オブジェクトは取得できないですが、
子オブジェクトの並びは Hierarchy と同じになります