FindObjectsOfType関連で便利なものをまとめておきます。
オブジェクトの一括処理
FindObjectsOfType
で特定のオブジェクトを一括取得し、foreach で各オブジェクトを一度に操作できます。
C#
foreach (var rigidbody in FindObjectsOfType<Rigidbody>())
{
rigidbody.useGravity = false; // Rigidbody の重力設定を一括で変更
}
C#FindObjectOfTypeの結果をリスト化
LINQ の ToList メソッドを使うと取得したオブジェクトをリストとして格納できるようです。
C#
using System.Linq;
var enemies = FindObjectsOfType<EnemyMovement>().ToList();
foreach (var enemy in enemies)
{
if (enemy.IsDead)
{
enemies.Remove(enemy); // 条件に応じてリストから削除
}
}
C#FindObjectsOfTypeAll
FindObjectsOfTypeAll は、ゲームシーン上だけでなく非アクティブなオブジェクトやPrefab内のオブジェクトも含めて全てのオブジェクトを検索します。
C#
// 非アクティブなものを含む全ての敵オブジェクトを検索
EnemyMovement[] allEnemies = Resources.FindObjectsOfTypeAll<EnemyMovement>();
C#タグでオブジェクトを検索
FindGameObjectsWithTag
指定されたタグを持つすべてのアクティブなゲームオブジェクトを配列で取得します。
C#
GameObject[] enemies = GameObject.FindGameObjectsWithTag("Enemy");
// タグが "Enemy" のすべてのオブジェクトを取得
C#LINQ を使ったタグでの検索
LINQ の Where を用いる方法もあるそうです。
C#
using System.Linq;
Enemy[] enemies = FindObjectsOfType<Enemy>().Where(enemy => enemy.CompareTag("Enemy"))
C#
コメント