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 | 指示过滤器是否使用正则表达式标记。 |