包含可用搜索引擎范围的枚举。
搜索引擎范围标识搜索来自哪里。这在为基础引擎功能实现单个入口点时非常有用。
using System; using System.Collections.Generic; using UnityEditor; using UnityEditor.SearchService; class BaseEngine : ISearchEngineBase { public virtual void BeginSession(ISearchContext context) { if (context.engineScope == ObjectSelectorSearch.EngineScope || context.engineScope == ProjectSearch.EngineScope) { // Cache Assets. } if (context.engineScope == ObjectSelectorSearch.EngineScope || context.engineScope == SceneSearch.EngineScope) { // Cache Scene objects. } } public virtual void EndSession(ISearchContext context) { // Flush any cached data. } public virtual void BeginSearch(ISearchContext context, string query) { } public virtual void EndSearch(ISearchContext context) { } public string name => "My Engine Service"; } [SceneSearchEngine] class SampleSceneFilterEngine : BaseEngine, ISceneSearchEngine { public bool Filter(ISearchContext context, string query, HierarchyProperty objectToFilter) { // Use cached Scene objects. // ... return true; } } [ProjectSearchEngine] class SampleProjectSearchEngine : BaseEngine, IProjectSearchEngine { public IEnumerable<string> Search(ISearchContext context, string query, Action<IEnumerable<string>> asyncItemsReceived) { // Use cached Assets. // ... return new List<string>(); } } [ObjectSelectorEngine] class SampleObjectSelectorEngine : BaseEngine, IObjectSelectorEngine { public bool SelectObject(ISearchContext context, Action<UnityEngine.Object, bool> onObjectSelectorClosed, Action<UnityEngine.Object> onObjectSelectedUpdated) { // Use cached Assets and Scene objects. return true; } public void SetSearchFilter(ISearchContext context, string searchFilter) {} }