提供给 SearchExpression 运行时的提示,以指定如何执行特定的 SearchExpressionEvaluatorAttribute。
以下是一个不支持线程评估的评估器的示例
[Description("Returns asset paths corresponding to a list of instance ids")] [SearchExpressionEvaluator("IdsToPaths", SearchExpressionEvaluationHints.ThreadNotSupported, SearchExpressionType.Iterable)] public static IEnumerable<SearchItem> IdsToPath(SearchExpressionContext c) { foreach (var idItem in c.args[0].Execute(c)) { if (SearchExpression.TryConvertToDouble(idItem, out var idNum)) { var id = (int)idNum; var path = AssetDatabase.GetAssetPath(id); if (!string.IsNullOrEmpty(path)) { yield return SearchExpression.CreateItem(path, c.ResolveAlias("asset path")); } } } }
ThreadSupported | 指定评估器支持在工作线程(不是主线程)中进行评估。这是默认的评估提示。 |
ThreadNotSupported | 指定评估器不支持工作线程评估,并且应该只在主线程中进行评估。如果评估器使用非线程安全的 Unity API(如 AssetDatabase),则可能出现这种情况。 |
ExpandSupported | 指定评估器可能会返回包含支持扩展(如 groupBy{})的 SearchExpression 的 SearchItem。 |
AlwaysExpand | 在评估 SearchExpression 时表示每个生成的项目可能是另一个需要评估的 SearchExpression。 |
DoNotValidateSignature | 指定不应该验证 SearchExpression 的参数的签名。这主要用于元编程评估器,如 apply{},其中部分评估器可用作参数。 |
DoNotValidateArgsSignature | 指定不应该由 SearchExpression 运行时验证评估器签名,从而允许将任何数量的具有任何类型的参数传递给评估器。验证参数成为评估器本身的工作。 |
ImplicitArgsLiterals | 指定评估器假定其参数是文字,并将按原样使用。 |
Default | 默认评估提示。当前,默认值是支持线程评估(SearchExpressionEvaluationHints.ThreadSupported)。 |