# OverlayToolbar

> Base class for toolbar elements intended to be drawn in an Overlay.

## Definition

* **Type:** Class
* **Namespace:** [UnityEditor.Overlays](/engine/6000.3/script-reference/unityeditor/overlays.md)
* **Assembly:** UnityEditor
* **Inherits from:** [VisualElement](/engine/6000.3/script-reference/unityengine/uielements/visualelement.md)
* **Implements:** [IEventHandler](/engine/6000.3/script-reference/unityengine/uielements/ieventhandler.md), [IResolvedStyle](/engine/6000.3/script-reference/unityengine/uielements/iresolvedstyle.md), [ITransform](/engine/6000.3/script-reference/unityengine/uielements/itransform.md), [ITransitionAnimations](/engine/6000.3/script-reference/unityengine/uielements/experimental/itransitionanimations.md), [IExperimentalFeatures](/engine/6000.3/script-reference/unityengine/uielements/iexperimentalfeatures.md), [IVisualElementScheduler](/engine/6000.3/script-reference/unityengine/uielements/ivisualelementscheduler.md)

```csharp
public class OverlayToolbar : VisualElement, IEventHandler, IResolvedStyle, ITransform, ITransitionAnimations, IExperimentalFeatures, IVisualElementScheduler
```

## Remarks

Use this class with [ICreateHorizontalToolbar](/engine/6000.3/script-reference/unityeditor/overlays/icreatehorizontaltoolbar.md) and [ICreateVerticalToolbar](/engine/6000.3/script-reference/unityeditor/overlays/icreateverticaltoolbar.md) to build Overlays that are dockable in toolbars.

## Examples

```csharp
using System.Collections.Generic;
using UnityEditor;
using UnityEditor.Overlays;
using UnityEditor.Toolbars;
using UnityEngine;
using UnityEngine.UIElements;

[Overlay(typeof(SceneView), "My Toolbar Overlay")]
class MyOverlay : Overlay, ICreateToolbar
{
    public override VisualElement CreatePanelContent()
    {
        return new Label("I'm the content shown in panel mode!");
    }

    public IEnumerable<string> toolbarElements
    {
        get
        {
            yield return MyToolbarItem.id;
            yield return SomeOtherToolbarItem.id;
        }
    }
}

[EditorToolbarElement(id, typeof(SceneView))]
class SomeOtherToolbarItem : EditorToolbarToggle
{
    public const string id = "SomeOtherToolbarItem";

    public SomeOtherToolbarItem()
    {
        icon = EditorGUIUtility.FindTexture("CustomTool");
    }
}

// Example toolbar element with multiple controls
[EditorToolbarElement(id, typeof(SceneView))]
class MyToolbarItem : OverlayToolbar
{
    public const string id = "MyToolbarItem";

    public MyToolbarItem()
    {
        var icon = AssetDatabase.LoadAssetAtPath<Texture2D>("MyIcon");
        Add(new EditorToolbarButton(icon, () => { Debug.Log("Hello!"); }));
        Add(new EditorToolbarButton(icon, () => { Debug.Log("Hello again!"); }));
        SetupChildrenAsButtonStrip();
    }
}
```

## Constructors

| Constructor                                                                                     | Description                  |
| ----------------------------------------------------------------------------------------------- | ---------------------------- |
| [OverlayToolbar()](/engine/6000.3/script-reference/unityeditor/overlays/overlaytoolbar/ctor.md) | Create a new OverlayToolbar. |

## Methods

| Method                                                                                                                          | Description                                                                          |
| ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ |
| [SetupChildrenAsButtonStrip](/engine/6000.3/script-reference/unityeditor/overlays/overlaytoolbar/setupchildrenasbuttonstrip.md) | Use this method to apply button strip styling to the contents of this VisualElement. |

## Inheritance

**Inherited Members:**

* [VisualElement.disabledUssClassName](/engine/6000.3/script-reference/unityengine/uielements/visualelement/disabledussclassname.md)
* [VisualElement.SetActivePseudoState(bool)](/engine/6000.3/script-reference/unityengine/uielements/visualelement/setactivepseudostate.md)
* [VisualElement.SetCheckedPseudoState(bool)](/engine/6000.3/script-reference/unityengine/uielements/visualelement/setcheckedpseudostate.md)
* [VisualElement.SendEvent(EventBase)](/engine/6000.3/script-reference/unityengine/uielements/visualelement/sendevent.md)
* [VisualElement.SetEnabled(bool)](/engine/6000.3/script-reference/unityengine/uielements/visualelement/setenabled.md)
* [VisualElement.MarkDirtyRepaint()](/engine/6000.3/script-reference/unityengine/uielements/visualelement/markdirtyrepaint.md)
* [VisualElement.IsMarkedForRepaint()](/engine/6000.3/script-reference/unityengine/uielements/visualelement/ismarkedforrepaint.md)
* [VisualElement.ContainsPoint(Vector2)](/engine/6000.3/script-reference/unityengine/uielements/visualelement/containspoint.md)
* [VisualElement.GetClasses()](/engine/6000.3/script-reference/unityengine/uielements/visualelement/getclasses.md)
* [VisualElement.ClearClassList()](/engine/6000.3/script-reference/unityengine/uielements/visualelement/clearclasslist.md)
* [VisualElement.AddToClassList(string)](/engine/6000.3/script-reference/unityengine/uielements/visualelement/addtoclasslist.md)
* [VisualElement.RemoveFromClassList(string)](/engine/6000.3/script-reference/unityengine/uielements/visualelement/removefromclasslist.md)
* [VisualElement.ToggleInClassList(string)](/engine/6000.3/script-reference/unityengine/uielements/visualelement/toggleinclasslist.md)
* [VisualElement.EnableInClassList(string, bool)](/engine/6000.3/script-reference/unityengine/uielements/visualelement/enableinclasslist.md)
* [VisualElement.ClassListContains(string)](/engine/6000.3/script-reference/unityengine/uielements/visualelement/classlistcontains.md)
* [VisualElement.FindAncestorUserData()](/engine/6000.3/script-reference/unityengine/uielements/visualelement/findancestoruserdata.md)
* [VisualElement.SetBinding(BindingId, Binding)](/engine/6000.3/script-reference/unityengine/uielements/visualelement/setbinding.md)
* [VisualElement.GetBinding(BindingId)](/engine/6000.3/script-reference/unityengine/uielements/visualelement/getbinding.md)
* [VisualElement.TryGetBinding(BindingId, Binding)](/engine/6000.3/script-reference/unityengine/uielements/visualelement/trygetbinding.md)
* [VisualElement.GetBindingInfos()](/engine/6000.3/script-reference/unityengine/uielements/visualelement/getbindinginfos.md#getbindinginfos\(\))
* [VisualElement.GetBindingInfos(List\<BindingInfo>)](/engine/6000.3/script-reference/unityengine/uielements/visualelement/getbindinginfos.md#getbindinginfos\(listbindinginfo\))
* [VisualElement.HasBinding(BindingId)](/engine/6000.3/script-reference/unityengine/uielements/visualelement/hasbinding.md)
* [VisualElement.ClearBinding(BindingId)](/engine/6000.3/script-reference/unityengine/uielements/visualelement/clearbinding.md)
* [VisualElement.ClearBindings()](/engine/6000.3/script-reference/unityengine/uielements/visualelement/clearbindings.md)
* [VisualElement.GetHierarchicalDataSourceContext()](/engine/6000.3/script-reference/unityengine/uielements/visualelement/gethierarchicaldatasourcecontext.md)
* [VisualElement.GetDataSourceContext(BindingId)](/engine/6000.3/script-reference/unityengine/uielements/visualelement/getdatasourcecontext.md)
* [VisualElement.TryGetDataSourceContext(BindingId, DataSourceContext)](/engine/6000.3/script-reference/unityengine/uielements/visualelement/trygetdatasourcecontext.md)
* [VisualElement.TryGetLastBindingToUIResult(BindingId, BindingResult)](/engine/6000.3/script-reference/unityengine/uielements/visualelement/trygetlastbindingtouiresult.md)
* [VisualElement.TryGetLastBindingToSourceResult(BindingId, BindingResult)](/engine/6000.3/script-reference/unityengine/uielements/visualelement/trygetlastbindingtosourceresult.md)
* [VisualElement.Add(VisualElement)](/engine/6000.3/script-reference/unityengine/uielements/visualelement/add.md)
* [VisualElement.Insert(int, VisualElement)](/engine/6000.3/script-reference/unityengine/uielements/visualelement/insert.md)
* [VisualElement.Remove(VisualElement)](/engine/6000.3/script-reference/unityengine/uielements/visualelement/remove.md)
* [VisualElement.RemoveAt(int)](/engine/6000.3/script-reference/unityengine/uielements/visualelement/removeat.md)
* [VisualElement.Clear()](/engine/6000.3/script-reference/unityengine/uielements/visualelement/clear.md)
* [VisualElement.ElementAt(int)](/engine/6000.3/script-reference/unityengine/uielements/visualelement/elementat.md)
* [VisualElement.IndexOf(VisualElement)](/engine/6000.3/script-reference/unityengine/uielements/visualelement/indexof.md)
* [VisualElement.Children()](/engine/6000.3/script-reference/unityengine/uielements/visualelement/children.md)
* [VisualElement.Sort(Comparison\<VisualElement>)](/engine/6000.3/script-reference/unityengine/uielements/visualelement/sort.md)
* [VisualElement.BringToFront()](/engine/6000.3/script-reference/unityengine/uielements/visualelement/bringtofront.md)
* [VisualElement.SendToBack()](/engine/6000.3/script-reference/unityengine/uielements/visualelement/sendtoback.md)
* [VisualElement.PlaceBehind(VisualElement)](/engine/6000.3/script-reference/unityengine/uielements/visualelement/placebehind.md)
* [VisualElement.PlaceInFront(VisualElement)](/engine/6000.3/script-reference/unityengine/uielements/visualelement/placeinfront.md)
* [VisualElement.RemoveFromHierarchy()](/engine/6000.3/script-reference/unityengine/uielements/visualelement/removefromhierarchy.md)
* [VisualElement.GetFirstOfType\<T>()](/engine/6000.3/script-reference/unityengine/uielements/visualelement/getfirstoftype.md)
* [VisualElement.GetFirstAncestorOfType\<T>()](/engine/6000.3/script-reference/unityengine/uielements/visualelement/getfirstancestoroftype.md)
* [VisualElement.Contains(VisualElement)](/engine/6000.3/script-reference/unityengine/uielements/visualelement/contains.md)
* [VisualElement.FindCommonAncestor(VisualElement)](/engine/6000.3/script-reference/unityengine/uielements/visualelement/findcommonancestor.md)
* [VisualElement.viewDataKey](/engine/6000.3/script-reference/unityengine/uielements/visualelement/viewdatakey.md)
* [VisualElement.userData](/engine/6000.3/script-reference/unityengine/uielements/visualelement/userdata.md)
* [VisualElement.disablePlayModeTint](/engine/6000.3/script-reference/unityengine/uielements/visualelement/disableplaymodetint.md)
* [VisualElement.usageHints](/engine/6000.3/script-reference/unityengine/uielements/visualelement/usagehints.md)
* [VisualElement.scaledPixelsPerPoint](/engine/6000.3/script-reference/unityengine/uielements/visualelement/scaledpixelsperpoint.md)
* [VisualElement.layout](/engine/6000.3/script-reference/unityengine/uielements/visualelement/layout.md)
* [VisualElement.contentRect](/engine/6000.3/script-reference/unityengine/uielements/visualelement/contentrect.md)
* [VisualElement.paddingRect](/engine/6000.3/script-reference/unityengine/uielements/visualelement/paddingrect.md)
* [VisualElement.worldBound](/engine/6000.3/script-reference/unityengine/uielements/visualelement/worldbound.md)
* [VisualElement.localBound](/engine/6000.3/script-reference/unityengine/uielements/visualelement/localbound.md)
* [VisualElement.worldTransform](/engine/6000.3/script-reference/unityengine/uielements/visualelement/worldtransform.md)
* [VisualElement.hasActivePseudoState](/engine/6000.3/script-reference/unityengine/uielements/visualelement/hasactivepseudostate.md)
* [VisualElement.hasInactivePseudoState](/engine/6000.3/script-reference/unityengine/uielements/visualelement/hasinactivepseudostate.md)
* [VisualElement.hasHoverPseudoState](/engine/6000.3/script-reference/unityengine/uielements/visualelement/hashoverpseudostate.md)
* [VisualElement.hasCheckedPseudoState](/engine/6000.3/script-reference/unityengine/uielements/visualelement/hascheckedpseudostate.md)
* [VisualElement.hasEnabledPseudoState](/engine/6000.3/script-reference/unityengine/uielements/visualelement/hasenabledpseudostate.md)
* [VisualElement.hasDisabledPseudoState](/engine/6000.3/script-reference/unityengine/uielements/visualelement/hasdisabledpseudostate.md)
* [VisualElement.hasFocusPseudoState](/engine/6000.3/script-reference/unityengine/uielements/visualelement/hasfocuspseudostate.md)
* [VisualElement.hasRootPseudoState](/engine/6000.3/script-reference/unityengine/uielements/visualelement/hasrootpseudostate.md)
* [VisualElement.pickingMode](/engine/6000.3/script-reference/unityengine/uielements/visualelement/pickingmode.md)
* [VisualElement.name](/engine/6000.3/script-reference/unityengine/uielements/visualelement/name.md)
* [VisualElement.enabledInHierarchy](/engine/6000.3/script-reference/unityengine/uielements/visualelement/enabledinhierarchy.md)
* [VisualElement.enabledSelf](/engine/6000.3/script-reference/unityengine/uielements/visualelement/enabledself.md)
* [VisualElement.languageDirection](/engine/6000.3/script-reference/unityengine/uielements/visualelement/languagedirection.md)
* [VisualElement.visible](/engine/6000.3/script-reference/unityengine/uielements/visualelement/visible.md)
* [VisualElement.generateVisualContent](/engine/6000.3/script-reference/unityengine/uielements/visualelement/generatevisualcontent.md)
* [VisualElement.dataSource](/engine/6000.3/script-reference/unityengine/uielements/visualelement/datasource.md)
* [VisualElement.dataSourcePath](/engine/6000.3/script-reference/unityengine/uielements/visualelement/datasourcepath.md)
* [VisualElement.dataSourceType](/engine/6000.3/script-reference/unityengine/uielements/visualelement/datasourcetype.md)
* [VisualElement.experimental](/engine/6000.3/script-reference/unityengine/uielements/visualelement/experimental.md)
* [VisualElement.hierarchy](/engine/6000.3/script-reference/unityengine/uielements/visualelement/hierarchy-1.md)
* [VisualElement.parent](/engine/6000.3/script-reference/unityengine/uielements/visualelement/parent.md)
* [VisualElement.panel](/engine/6000.3/script-reference/unityengine/uielements/visualelement/panel.md)
* [VisualElement.contentContainer](/engine/6000.3/script-reference/unityengine/uielements/visualelement/contentcontainer.md)
* [VisualElement.visualTreeAssetSource](/engine/6000.3/script-reference/unityengine/uielements/visualelement/visualtreeassetsource.md)
* [VisualElement.this\[int\]](/engine/6000.3/script-reference/unityengine/uielements/visualelement/item.md)
* [VisualElement.childCount](/engine/6000.3/script-reference/unityengine/uielements/visualelement/childcount.md)
* [VisualElement.schedule](/engine/6000.3/script-reference/unityengine/uielements/visualelement/schedule.md)
* [VisualElement.style](/engine/6000.3/script-reference/unityengine/uielements/visualelement/style.md)
* [VisualElement.resolvedStyle](/engine/6000.3/script-reference/unityengine/uielements/visualelement/resolvedstyle.md)
* [VisualElement.customStyle](/engine/6000.3/script-reference/unityengine/uielements/visualelement/customstyle.md)
* [VisualElement.styleSheets](/engine/6000.3/script-reference/unityengine/uielements/visualelement/stylesheets.md)
* [VisualElement.tooltip](/engine/6000.3/script-reference/unityengine/uielements/visualelement/tooltip.md)
* [Focusable.Blur()](/engine/6000.3/script-reference/unityengine/uielements/focusable/blur.md)
* [Focusable.focusable](/engine/6000.3/script-reference/unityengine/uielements/focusable/focusable.md)
* [Focusable.tabIndex](/engine/6000.3/script-reference/unityengine/uielements/focusable/tabindex.md)
* [Focusable.delegatesFocus](/engine/6000.3/script-reference/unityengine/uielements/focusable/delegatesfocus.md)
* [CallbackEventHandler.RegisterCallback\<T>(EventCallback\<T>, TrickleDown)](/engine/6000.3/script-reference/unityengine/uielements/callbackeventhandler/registercallback.md)
* [CallbackEventHandler.RegisterCallbackOnce\<T>(EventCallback\<T>, TrickleDown)](/engine/6000.3/script-reference/unityengine/uielements/callbackeventhandler/registercallbackonce.md)
* [CallbackEventHandler.RegisterCallback\<T, U>(EventCallback\<T, T>, T, TrickleDown)](/engine/6000.3/script-reference/unityengine/uielements/callbackeventhandler/registercallback.md)
* [CallbackEventHandler.RegisterCallbackOnce\<T, U>(EventCallback\<T, T>, T, TrickleDown)](/engine/6000.3/script-reference/unityengine/uielements/callbackeventhandler/registercallbackonce.md)
* [CallbackEventHandler.RegisterCallback\<T>(EventCallback\<T>, CallbackOptions)](/engine/6000.3/script-reference/unityengine/uielements/callbackeventhandler/registercallback.md)
* [CallbackEventHandler.RegisterCallback\<T, U>(EventCallback\<T, T>, T, CallbackOptions)](/engine/6000.3/script-reference/unityengine/uielements/callbackeventhandler/registercallback.md)
* [CallbackEventHandler.UnregisterCallback\<T>(EventCallback\<T>, TrickleDown)](/engine/6000.3/script-reference/unityengine/uielements/callbackeventhandler/unregistercallback.md)
* [CallbackEventHandler.UnregisterCallback\<T>(EventCallback\<T>, CallbackOptions)](/engine/6000.3/script-reference/unityengine/uielements/callbackeventhandler/unregistercallback.md)
* [CallbackEventHandler.UnregisterCallback\<T, U>(EventCallback\<T, T>, TrickleDown)](/engine/6000.3/script-reference/unityengine/uielements/callbackeventhandler/unregistercallback.md)
* [CallbackEventHandler.UnregisterCallback\<T, U>(EventCallback\<T, T>, CallbackOptions)](/engine/6000.3/script-reference/unityengine/uielements/callbackeventhandler/unregistercallback.md)
* [CallbackEventHandler.UnregisterAllRemovableCallbacks()](/engine/6000.3/script-reference/unityengine/uielements/callbackeventhandler/unregisterallremovablecallbacks.md)
* [CallbackEventHandler.HasTrickleDownHandlers()](/engine/6000.3/script-reference/unityengine/uielements/callbackeventhandler/hastrickledownhandlers.md)
* [CallbackEventHandler.HasBubbleUpHandlers()](/engine/6000.3/script-reference/unityengine/uielements/callbackeventhandler/hasbubbleuphandlers.md)
* [CallbackEventHandler.HandleEventBubbleUp(EventBase)](/engine/6000.3/script-reference/unityengine/uielements/callbackeventhandler/handleeventbubbleup.md)
* [CallbackEventHandler.HandleEventTrickleDown(EventBase)](/engine/6000.3/script-reference/unityengine/uielements/callbackeventhandler/handleeventtrickledown.md)
* [CallbackEventHandler.NotifyPropertyChanged(BindingId)](/engine/6000.3/script-reference/unityengine/uielements/callbackeventhandler/notifypropertychanged.md)
