Skip to content

Search Integration

Sebastien Phaneuf edited this page Dec 22, 2023 · 3 revisions

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:

Main menu bar

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.

Menu Items

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.

Shortcut bindings

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:

Creating your own Search Invocation

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.

Goto Search button

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.

Finding references in 23.2/23.3

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).

Finding properties in 23.3

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:

Conclusion

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.

Clone this wiki locally