Anda dapat mendaftarkan tindakan untuk Penyedia Pencarian. Pengguna dapat mengakses tindakan yang terdaftar melalui ikon More Options (⋮) dalam hasil pencarian.
Sitemap Mendaftarkan penuntut aksi dan mendaftarkan Penyedia Pencarian adalah proses yang berbeda. Anda dapat mendaftarkan penuntut aksi baru untuk Penyedia Pencarian yang ada.Note: Registering an action handler and registering a Search Provider are different processes. You can register new action handlers for existing Search Providers.
Untuk mendaftarkan aksi, Anda membuat fungsi ditandai dengan atribut SearchActionsProvider
. Fungsi ini harus mengembalikan IEnumerable<SearchAction>
.
Contoh berikut menunjukkan cara mendaftarkan tindakan untuk Penyedia Pencarian Aset.
[SearchActionsProvider]
internal static IEnumerable<SearchAction> ActionHandlers()
{
return new[]
{
new SearchAction("asset", "select", Icons.@goto, "Select asset...")
{
handler = (item, context) =>
{
var asset = AssetDatabase.LoadAssetAtPath<Object>(item.id);
if (asset != null)
{
Selection.activeObject = asset;
EditorGUIUtility.PingObject(asset);
EditorWindow.FocusWindowIfItsOpen(
Utils.GetProjectBrowserWindowType());
}
}
},
new SearchAction("asset", "open", SearchIcon.open, "Open asset... (Alt+Enter)")
{
handler = (item, context) =>
{
var asset = AssetDatabase.LoadAssetAtPath<Object>(item.id);
if (asset != null)
AssetDatabase.OpenAsset(asset);
}
},
new SearchAction("asset", "reveal", SearchIcon.folder, "Show in Explorer")
{
handler = (item, context) =>
{
EditorUtility.RevealInFinder(item.id);
}
}
};
}
Kelas SearchAction
menggambarkan aksi dan memberikan pegangan untuk mengeksekusi aksi pada SearchItem
tertentu.
public class SearchAction
{
public SearchAction(string providerType, string name,
Texture2D icon = null,
string tooltip = null);
public ActionHandler handler;
public EnabledHandler isEnabled;
}
providerType
adalah ID unik dari penyedia yang Anda daftarkan tindakan.
ActionHandler
memiliki tanda tangan berikut:
// item: item that needs the action to be executed.
// context: search context of the SearchTool when the item is executed.
public delegate void ActionHandler(SearchItem item, SearchContext context);
Anda dapat mengatur tindakan dengan predikat isEnabled
, yang menentukan apakah tindakan tersedia untuk item tertentu.
Untuk memberikan tindakan kontekstual (klik kanan) untuk jenis item tertentu dalam hasil pencarian, mendaftarkan tindakan bernama context
untuk Penyedia Pencarian.
Contoh berikut adalah dari Penyedia Pencarian Aset:
new SearchAction(type, "context", null, "Context")
{
handler = (item, context) =>
{
var asset = AssetDatabase.LoadAssetAtPath<Object>(item.id);
if (asset != null)
{
Selection.activeObject = asset;
EditorUtility.DisplayPopupMenu(
QuickSearchTool.ContextualActionPosition,
"Assets/", null);
}
}
}