Penyedia Pencarian menggunakan fungsi fetchItems
untuk mencari item dan menyaring hasilnya. Fungsi fetchItems
memiliki tanda tangan berikut:
// context: the necessary search context (for example, tokenized search and
// sub-filters).
// items: list of items to populate (if not using the asynchronous api)
// provider: the Search Provider itself
public delegate IEnumerable<SearchItem> GetItemsHandler(SearchContext context,
List<SearchItem> items,
SearchProvider provider);
SearchProvider
harus menambahkan SearchItem
baru ke daftar items
atau mengembalikan IEnumerable<SearchItem>
.
Sitemap Jika Anda tidak menggunakan API Note: asinkron, Anda harus mengembalikan
fetchItems
dalam fungsinull
Anda.fetchItems
function.
A SearchItem
adalah bangunan sederhana:
public struct SearchItem
{
public readonly string id;
// The item score affects how Search sorts the item within the results from the Search Provider.
public int score;
// Optional: Display name of the item. If the item does not have one,
// SearchProvider.fetchLabel is called).
public string label;
// If the item does not have a description SearchProvider.fetchDescription
// is called when Search first displays the item.
public string description;
// If true, the description already has rich text formatting.
public SearchItemDescriptionFormat descriptionFormat;
// If the item does not have a thumbnail, SearchProvider.fetchThumbnail
// is called when Search first displays the item.
public Texture2D thumbnail;
// Search Provider user-customizable content
public object data;
}
A SearchItem
hanya membutuhkan id
.
Sitemap Ketika Anda menyaring sesuai dengan Tip: menggunakan fungsi statis
SearchContext.searchText
yang membuat pencarian parsial.SearchProvider.MatchSearchGroup
which makes a partial search.
Untuk menggunakan pencarian fuzzy pada item, Anda dapat menggunakan FuzzySearch.FuzzyMatch
, seperti dalam contoh berikut:
if (FuzzySearch.FuzzyMatch(sq, CleanString(item.label), ref score, matches))
item.label = RichTextFormatter.FormatSuggestionTitle(item.label, matches);
Semua item pencarian diurutkan terhadap item dari penyedia yang sama dengan score
mereka. lower score muncul di bagian atas daftar item (ascending sorting).
Anda dapat menggunakan API fetchItems
asinkron ketika Penyedia Pencarian mengambil waktu yang lama untuk menghitung hasilnya, atau bergantung pada mesin pencari asinkron seperti WebRequests.
Untuk menggunakan API asynchronous, memiliki fungsi fetchItems
mengembalikan IEnumerable<SearchItem>
. IEnumerable<SearchItem>
harus menjadi fungsi yang menghasilkan hasil, sehingga API dapat mengambil satu item sekaligus.
Ketika IEnumerable<SearchItem>
dikembalikan, enumerator disimpan dan diserahkan selama pembaruan aplikasi. Enumerasi berlanjut selama beberapa pembaruan aplikasi sampai selesai.
Waktu iterasi dilarang untuk memastikan UI(User Interface) Memungkinkan pengguna untuk berinteraksi dengan aplikasi Anda. Unity saat ini mendukung tiga sistem UI. More info
Lihat di Glossary tidak diblokir. Namun, karena panggilan berada di benang utama, Anda harus memastikan untuk menghasilkan sesegera mungkin jika hasilnya tidak siap.
Contoh berikut menunjukkan cara menggunakan API fetchItems
asinkron:
public class AsyncSearchProvider : SearchProvider
{
public AsyncSearchProvider(string id, string displayName = null)
: base(id, displayName)
{
fetchItems = (context, items, provider) => FetchItems(context, provider);
}
private IEnumerable<SearchItem> FetchItems(SearchContext context, SearchProvider provider)
{
while(ResultsNotReady())
{
yield return null;
}
var oneItem = // Get an item
yield return oneItem;
var anotherItem = // Get another item
yield return anotherItem;
if(SomeConditionThatBreaksTheSearch())
{
// Search must be terminated
yield break;
}
// You can iterate over an enumerable. The enumeration
// continues where it left.
foreach(var item in someItems)
{
yield return item;
}
}
}
AssetStoreProvider.cs
: query Asset StoreSebuah perpustakaan yang berkembang dari aset gratis dan komersial yang diciptakan oleh Unity dan anggota komunitas. Menawarkan berbagai aset, dari tekstur, model dan animasi ke seluruh contoh proyek, tutorial dan ekstensi Editor. More infoESS.cs
: menciptakan proses untuk memulai indeks pencarian Sumber Entria, yang memberikan pencarian teks penuh untuk Aset di Proyek Anda.