Version: 2022.3

SearchUtils.FetchGameObjects

切换到手册
public static GameObject[] FetchGameObjects (SceneManagement.Scene scene);
public static IEnumerable<GameObject> FetchGameObjects ();

参数

scene Scene to get objects from.

返回

GameObject[] The array of game objects in the scene.

描述

Utility function to fetch all the game objects in a particular scene.

Use SearchUtils.FetchGameObjects to create a custom SearchProvider that is able to access current scene objects.

static void OnEnable()
{
    s_GameObjects = SearchUtils.FetchGameObjects().ToArray();
    s_QueryEngine = new QueryEngine<GameObject>();

    // Id supports all operators
    s_QueryEngine.AddFilter("id", go => go.GetInstanceID());
    // Name supports only :, = and !=
    s_QueryEngine.AddFilter("n", go => go.name, new[] {":", "=", "!="});

    // Add distance filtering. Does not support :.
    s_QueryEngine.AddFilter("dist", DistanceHandler, DistanceParamHandler, new[] {"=", "!=", "<", ">", "<=", ">="});
}
static IEnumerator SearchItems(SearchContext context, SearchProvider provider)
{
    var query = s_QueryEngine.ParseQuery(context.searchQuery);
    if (!query.valid)
        yield break;

    var filteredObjects = query.Apply(s_GameObjects);
    foreach (var filteredObject in filteredObjects)
    {
        yield return provider.CreateItem(filteredObject.GetInstanceID().ToString(), null, null, null, filteredObject.GetInstanceID());
    }
}