Kelas SearchProvider mengeksekusi pencarian untuk jenis item tertentu, dan mengelola thumbnails, deskripsi, dan sub-filter.
Memiliki API dasar berikut:
public class SearchProvider
{
public SearchProvider(string id, string displayName = null);
// Creates an Item bound to this provider.
public SearchItem CreateItem(string id, string label = null, string description = null, Texture2D thumbnail = null);
// Utility functions to check whether the search text matches a string.
public static bool MatchSearchGroups(string searchContext, string content);
public static bool MatchSearchGroups(string searchContext, string content,
out int startIndex, out int endIndex);
// The provider's unique ID.
public NameId name;
// Text token to "filter" a provider (for example, "me:", "p:", and "s:").
public string filterId;
// This provider is only active when a search explicitly specifies it with
// its filterId.
public bool isExplicitProvider;
// Handler to fetch and format the label of a search item.
public FetchStringHandler fetchLabel;
// Handler to provide an async description for an item. Called just before
// Search displays the item.
// Allows a plug-in provider to fetch long descriptions only when
// Search needs them.
public FetchStringHandler fetchDescription;
// Handler to provider an async thumbnail for an item. Called just before
// Search displays the item.
// Allows a plug-in provider to fetch/generate previews only when
// Search needs them.
public PreviewHandler fetchThumbnail;
// Handler to support drag interactions. It is up to the SearchProvider
// to properly set up the DragAndDrop manager.
public StartDragHandler startDrag;
// Called when the selection changes and Search can track it.
public TrackSelectionHandler trackSelection;
// MANDATORY: Handler to get items for a search context.
public GetItemsHandler fetchItems;
// A Search Provider can return a list of words that help the user complete
// their search query.
public GetKeywordsHandler fetchKeywords;
// List of sub-filters that are visible in the FilterWindow for a
// SearchProvider (see AssetProvider for an example).
public List<NameId> subCategories;
// Called when the Search window opens. Allows the Provider to perform
// some caching.
public Action onEnable;
// Called when the Search window closes. Allows the Provider to release
// cached resources.
public Action onDisable;
// Int to sort the Provider. Affects the order of search results and the
// order in which providers are shown in the FilterWindow.
public int priority;
// Called when Search opens in "contextual mode". If you return true
// it means the provider is enabled for this search context.
public IsEnabledForContextualSearch isEnabledForContextualSearch;
}
Ketika Anda meluncurkan jendela Pencarian, panggilan onEnable
, yang dapat Anda gunakan untuk melihat sumber daya.
Ketika Anda menutup jendela Pencarian, panggilan onDisable
, yang dapat Anda gunakan untuk melepaskan sumber daya.
Karena daftar item pencarian menggunakan algoritma gulir virtual, beberapa bidang SearchItem
(misalnya, label
, thumbnail
, dan description
) diambil atas permintaan, jika mereka belum disediakan.
Untuk mengisi bidang tersebut setelah item dibuat, Anda perlu menginisialisasi SearchProvider
dengan handler spesifik (fetchLabel
, fetchDescription
, fetchThumbnail
).
Anda dapat mendaftarkan callback pada trackSelection
untuk memiliki Cari melakukan sesuatu ketika Anda memilih item dalam hasil pencarian menggunakan mouse atau keyboard. Sebagai contoh, penyedia AssetSetiap media atau data yang dapat digunakan dalam permainan atau proyek Anda. Aset mungkin berasal dari file yang dibuat di luar Unity, seperti model 3D, file audio atau gambar. Anda juga dapat membuat beberapa jenis aset di Unity, seperti Pengontrol Animator, Audio Mixer atau Tekstur Render. More info
Lihat di Glossary dan SceneAdegan berisi lingkungan dan menu permainan Anda. Pikirkan setiap file Adegan unik sebagai tingkat yang unik. Di setiap Adegan, Anda menempatkan lingkungan, hambatan, dan dekorasi, pada dasarnya merancang dan membangun permainan Anda dalam potongan-potongan. More info
Lihat di Glossary menggunakan callback trackSelection
untuk ping item yang dipilih di Pencarian.
Beberapa Penyedia Pencarian mengembalikan item yang dapat Anda seret dan turun ke Adegan. Jika Anda membuat penyedia kustom yang mendukung drag dan drop, menerapkan startDrag
.
Misalnya, penyedia Asset dan Scene mengisi struktur DragAndDrop
dengan item yang relevan UID untuk memungkinkan drag dan drop interaksi yang tepat.
Ketika Anda membuka jendela Pencarian dengan pintasan Alt Shift + C, itu memulai pencarian kontekstual, yang berarti mencari jendela yang memiliki fokus.
Ketika Anda meluncurkan pencarian kontekstual, penyedia yang mengesampingkan pemeriksaan isEnabledForContextualSearch
untuk melihat apakah mereka harus diaktifkan, seperti dalam contoh berikut:
// Taken from Scene hierarchy provider:
// Makes the provider part of the contextual search if the Scene view or the
// Hierarchy window has focus.
isEnabledForContextualSearch = () =>
QuickSearchTool.IsFocusedWindowTypeName("SceneView") ||
QuickSearchTool.IsFocusedWindowTypeName("SceneHierarchyWindow");