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

SearchExpressionEvaluationHints

枚举

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交的内容,但我们会阅读用户提出的每个建议的更改,并在适用情况下进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

描述

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