搜索项目由搜索提供程序返回,以便在执行搜索后显示给用户。搜索项目包含用于排序和呈现搜索结果的所有数据。SearchItem 的某些成员可以在异步回调中指定(请参阅 SearchItem.fetchThumbnail、SearchItem.fetchDescription 等)。
SearchItem 通常使用 SearchProvider.CreateItem 函数创建。此示例演示如何使用所有成员创建 SearchItem。
[SearchItemProvider] internal static SearchProvider CreateProvider() { return new SearchProvider(id, name) { filterId = "hex:", priority = 99999, // put example provider at a low priority showDetailsOptions = ShowDetailsOptions.Description | ShowDetailsOptions.Preview, fetchItems = (context, items, provider) => { var expression = context.searchQuery; if (expression.Length == 6 && IsHex(expression)) { expression = "#" + expression; items.Add(provider.CreateItem(context, expression, GetColorName(expression), "Look at this " + GetColorName(expression) + " color!", CreateTextureFromColor(expression, 64, 64), null)); } return null; }, fetchPreview = (item, context, size, options) => { return CreateTextureFromColor(item.id, (int)size.x, (int)size.y); }, }; }
clear | 表示无的搜索项目,通常用于清除选择。 |
context | 用于创建该项目的上下文。 |
data | 搜索提供程序定义的内容。它可用于将任何数据传输到自定义搜索提供程序处理程序(例如 `fetchDescription`)。 |
description | 如果未提供描述,则在首次显示项目时将调用 SearchProvider.fetchDescription。 |
id | 搜索项目对于搜索提供程序的唯一 ID。 |
label | 搜索项目的显示名称。 |
options | 指示如何显示和使用搜索项目的标志。 |
preview | 搜索项目的大预览。通常由 fetchPreview 缓存。 |
provider | 指向搜索提供程序的反向指针。 |
score | 项目相关性分数将影响搜索提供程序如何对项目进行排序。得分较低的项目具有更高的相关性,并且优先考虑。 |
this[string] | 用于获取项目字段值的运算符。 |
thumbnail | 如果未提供缩略图,则在首次显示项目时将调用 SearchProvider.fetchThumbnail。 |
value | 选择字段时,搜索表达式系统设置的值。 |
SearchItem | 构造一个搜索项目。对于给定的搜索查询,搜索项目至少需要一个唯一 ID。 |
CompareTo | 检查两个 SearchItem 是否具有相同的 ID。 |
Equals | 检查两个 SearchItem 是否具有相同的 ID。 |
GetDescription | 获取并格式化描述。 |
GetFieldCount | 返回存储在搜索项目中的字段数量。 |
GetFieldNames | 返回所有字段名称的列表。 |
GetFields | 枚举所有搜索项目的字段。 |
GetHashCode | SearchItem 的默认哈希值。 |
GetLabel | 获取并格式化标签。 |
GetPreview | 如果可用,则获取搜索项目预览,否则此时获取预览。 |
GetThumbnail | 如果可用,则获取搜索项目的缩略图,否则此时获取缩略图。与网格视图相比,缩略图通常用于列表视图。 |
GetValue | 获取给定字段的默认搜索项目值。 |
RemoveField | 删除项目字段。 |
SetField | 设置字段值和别名。 |
ToObject | 返回搜索项目持有的任何有效的 Unity 对象。 |
TryGetField | 如果可用,则返回项目字段。 |
TryGetValue | 返回字段的值(如果有)。与 SearchItem.TryGetField 相比,此方法还解析了内置字段,例如 id、label、description、value 等。 |