概要
using System.Linq; using UnityEditor; using UnityEngine; public static class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { var list = AssetDatabase .FindAssets( "t:Prefab" ) .Select( AssetDatabase.GUIDToAssetPath ) .Select( c => AssetDatabase.LoadAssetAtPath<GameObject>( c ) ) .Where( c => c != null ) .Where( c => c.name != "DataPrivacyButton" ) .SelectMany( c => c.GetComponentsInChildren<Transform>( true ) ) .Select( c => c.gameObject ) ; foreach ( var n in list ) { Debug.Log( n.name ); } } }
上記のようなコードを記述することで Unity プロジェクトに含まれる
すべてのプレハブ(子オブジェクトを含む)を取得できます
Unity 2018.3 で試したところ、Unity プロジェクトに含まれていない
「DataPrivacyButton」という名前のプレハブまで取得されてしまったので
除外するようにしています(Unity のビルトインアセット?)