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

QueryValidationOptions.validateFilters

建议更改内容

提交成功!

感谢您帮助我们提升 Unity 文档的质量。虽然我们无法接受所有提交,但我们会仔细阅读用户建议的每条更改,并在可适用处进行更新。

关闭

提交失败

出于某种原因,无法提交您建议的更改。请在几分钟后重试。感谢您花时间帮助我们提升 Unity 文档的质量。

关闭

取消

public bool validateFilters;

说明

指示是否应验证筛选器的布尔值。默认为 false。

如果为 true,并且 skipUnknownFilters 为 false,则在未使用 QueryEngine.SetDefaultFilter 提供默认处理程序时,未知筛选器会生成错误。

using UnityEditor;
using UnityEditor.Search;
using UnityEngine;

static class Example_QueryValidationOptions_validateFilters
{
    [MenuItem("Examples/QueryValidationOptions/validateFilters")]
    public static void RunExample()
    {
        // Set up the query validation options with no filter validation
        var validationOptions = new QueryValidationOptions { validateFilters = false };

        // Set up the query engine
        var queryEngine = new QueryEngine<MyObjectType>(validationOptions);
        queryEngine.AddFilter("id", myObj => myObj.id);
        queryEngine.SetSearchDataCallback(myObj => new[] { myObj.id.ToString(), myObj.name });

        // Parse a query with the filter "id". There shouldn't be any errors
        var query = queryEngine.ParseQuery("id>10");
        Debug.Assert(query.valid, $"Query \"{query.text}\" should be valid.");

        // Because the QueryEngine doesn't validate filters, no other filters will generate an error when parsed.
        query = queryEngine.ParseQuery("name:MyName");
        Debug.Assert(query.valid, $"Query \"{query.text}\" should be valid.");
    }

    class MyObjectType
    {
        public int id { get; set; }
        public string name { get; set; } = string.Empty;
        public Vector2 position { get; set; } = Vector2.zero;
        public bool active { get; set; }

        public override string ToString()
        {
            return $"({id}, {name}, ({position.x}, {position.y}), {active})";
        }
    }
}