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

SearchExpressionContext

UnityEditor.Search 中的结构体

建议更改

成功!

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

关闭

提交失败

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

关闭

取消

描述

此上下文封装了评估 SearchExpression 所需的所有数据,并允许用户与表达式的评估运行时进行交互。每当调用 SearchExpression.Execute 时,会使用 SearchExpressionRuntime 自动创建一个 SearchExpressionContext。

以下示例展示了在评估期间如何使用 SearchExpressionContext

[SearchExpressionEvaluator(SearchExpressionType.Iterable | SearchExpressionType.Variadic)]
[SearchExpressionEvaluatorSignatureOverload(SearchExpressionType.Number, SearchExpressionType.Iterable | SearchExpressionType.Variadic)]
[Description("Extract and returns the X first results for each expression.")]
public static IEnumerable<SearchItem> TakeXFirst(SearchExpressionContext c)
{
    var argIndex = 0;
    var takeNumber = 1;
    if (c.args[0].types.HasFlag(SearchExpressionType.Number))
    {
        ++argIndex;
        takeNumber = Math.Max((int)(c.args[0].GetNumberValue(takeNumber)), 0);
    }

    for ( ; argIndex < c.args.Length; ++argIndex)
    {
        var iterable = c.args[argIndex].Execute(c);
        var taken = 0;
        foreach (var item in iterable)
        {
            if (item == null)
                yield return null;
            else
            {
                yield return item;
                ++taken;
                if (taken == takeNumber)
                {
                    c.Break();
                    break;
                }
            }
        }
    }
}

属性

args传递给正在评估的 SearchExpression 的参数。
expression正在评估的 [[]SearchExpression]。
items由 searchExpression 评估产生的 SearchItems。
runtime与该上下文关联的 SearchExpressionRuntime。运行时存储评估 SearchExpression 所需的所有运行时数据(堆栈帧、上下文堆栈和项目)。
search包含用于创建 SearchExpression 的解析搜索查询的 SearchContex。
valid当前上下文是否有效。如果无效,则表示关联的 SearchExpression 为空,或 SearchExiressionRuntime 无效。

公共方法

Break中断 SearchExpression 的评估,这意味着不再生成项目。
Continue告诉 SearchExpression 评估继续执行。
IsBreaking当前上下文是否已标记为中断执行?
IsContinuing当前上下文是否已标记为继续执行?
ResetIterationControl重新启动 SearchExpression 的评估和迭代。
ResolveAlias尝试使用附加到该上下文的 SearchExpressionRuntime 解析别名值。如果要求解析 SearchExpression.alias,则每帧都会解析一次。
ThrowError通过抛出 SearchExceptionEvaluatorException 停止 SearchExpression 评估。编写评估器的用户可以决定是否在传递给评估的参数无效或在评估过程中出现问题时抛出这些异常。
ToString获取上下文的字符串表示形式。