UnityEditor.Search.Providers 中的类
/
继承自:Search.QueryEngineFilterAttribute
自定义属性用于自定义场景搜索提供程序使用的搜索引擎。
此示例演示如何使用 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 | 指示过滤器是否使用正则表达式标记。 |