提供给 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)。 |