-
Notifications
You must be signed in to change notification settings - Fork 20
Search Integration
The Search Window can be invoked from multiple places in the Editor. It is becoming more and more integrated to allow all sorts of workflows:
Right in the main menu bar there is the official button to open the Global Search Window. This Search Window can also be invoked with the Ctrl + K
shortcut.
Each time you invoke the Global Search Window it is completely restored from its last invocation. Its size, position, enabled Search Providers, Icon Size, Table View and search query are all restored. The focus is right in the Search Field allowing to start typing directly.
We have created a lot of menu items to allow you to invoke Search in various contexts.
- Find Files: Find any files on disk using our threaded Find provider supporting regex and globs
- Scene: Open any scene in your project. This menu got convered in more details here.
-
Asset Store: We have a Search provider allowing you to search the Asset Store itself! From this window you can either open the corresponding Asset Store web page or if you already bought the asset, you can open its page in the Package Manager.
- Asset Database: Search using the ADB provider.
All of the menu items above and much more Search invocation can be bound to shortcut. Personnally I feel the more Search shortcut (Ctrl + K
) are part of your muscle memory, the easier it is to discover new Search usages. The Unity Shortcut manage allows to bind all those Search invocation to your key sequence of choice:
If you create your own SearchProvider and you would like to setup a MenuItem or shortcut to open the Search Window it is really easy.
Let's you liked the Asset Store example above but you would like to only search for Free assets on Christmas. Here is a snippet for you:
[MenuItem("Search/Free Asset Gifts")]
static void SearchStore()
{
var storeContext = SearchService.CreateContext("store", "price=0");
var viewState = new SearchViewState(storeContext,
UnityEngine.Search.SearchViewFlags.DisableNoResultTips |
UnityEngine.Search.SearchViewFlags.GridView);
viewState.windowTitle = new GUIContent("Free Stuff for Christmas");
viewState.queryBuilderEnabled = true;
SearchService.ShowWindow(viewState);
}
There are shorter ways to invoke the Search Window like SearchService.ShowContextual and SearchService.ShowWindow but this snippets showcase how to setup a SearchViewState in order to have absolute control on the appearance of the Search Window.
Have you noticed these 2 buttons in the Editor?
These buttons can take you from the Hierarchy or the Project Browser to the Search Window. But why would you want to use this workflow if you are ALREADY in the Project Browser doing some nice filtering?
- Because the Visual Query Builder allows you to build a more complex and precise query.
- Or because you would like to save this Query on disk as a live Collection called a SearchQueryAsset. This workflows was covered in more details here.
Warning: the feature I am about to show you are currently in Unity 23.2 and 23.3. I will see if we can backport those to 22.3 No promises though. Also, in order to use these feature your project indexing settings will need to have the dependencies option toggled. This post gives more tips on how to setup indexation in your project.
If you right click on an asset or a gameobject you now have new options to start a Search:
And just like that you can easily obtain references to any assets (or gameobject).
Similarly, if properties are indexed in your project you can open the Search Window to search for a specific property values. Right click on any properties of an asset and select: Search for same property
:
Naturally the same is true for GameObject:
The Search Window is integrated in multiple places within Unity Editor UI. And it is also really simple to add your own invocation. But in the end the more you Ctrl+K
the more your search life will be easier.