版本: Unity 6 (6000.0)
语言英语
  • C#

SceneQueryEngineFilterAttribute

UnityEditor.Search.Providers 中的类

/

继承自:Search.QueryEngineFilterAttribute

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实阅读了用户提出的每个建议更改,并在适用时进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

描述

自定义属性用于自定义场景搜索提供程序使用的搜索引擎。

此示例演示如何使用 SceneQueryEngineFilter 属性自定义场景搜索提供程序使用的搜索引擎。

场景搜索提供程序允许用户使用自定义过滤器搜索场景对象,例如 is:prefab prefab:modified 等。

以下示例演示如何添加属性过滤器 lights>=1 来搜索受一个或多个灯光影响的网格。

[SceneQueryEngineFilter("lights", new[] { "=", "!=", "<", ">", "<=", ">=" })]
internal static int? MeshRendererAffectedByLightsSceneFilter(GameObject go)
{
    if (!go.TryGetComponent<MeshRenderer>(out var meshRenderer))
        return null;

    if (!meshRenderer.isVisible)
        return null;

    var lightEffectCount = 0;
    var gp = go.transform.position;
    foreach (var light in Object.FindObjectsByType<Light>(FindObjectsSortMode.None))
    {
        if (!light.isActiveAndEnabled)
            continue;

        var lp = light.transform.position;

        var distance = Vector3.Distance(gp, lp);
        if (distance > light.range)
            continue;

        if (light.type == UnityEngine.LightType.Spot)
        {
            var da = Vector3.Dot(light.transform.forward, lp - gp);
            if (da > Mathf.Deg2Rad * light.spotAngle)
                continue;
        }

        lightEffectCount++;
    }

    return lightEffectCount;
}

构造函数

SceneQueryEngineFilterAttribute使用相应的标记和支持的操作符创建过滤器。

继承成员

属性

comparisonOptions字符串比较选项。
overridesStringComparison指示过滤器是否覆盖全局字符串比较选项的标志。当使用 comparisonOptions 时设置为 true。
paramTransformerFunction要与此过滤器一起使用的参数转换器函数的名称。使用适当的参数转换器属性标记参数转换器函数。
supportedOperators支持的操作符标记列表。所有操作符均为 null。
token过滤器的标识符。通常是过滤器中操作符之前的部分(例如,"id>=2" 中的 "id")。
useParamTransformer指示此过滤器是否使用参数转换器函数的标志。当使用 paramTransformerFunction 时设置为 true。
useRegularExpressionToken指示过滤器是否使用正则表达式标记。