Version: 2023.1
public IEnumerable<string> toolbarElements ;

描述

Use toolbarElements to specify the contents of this Overlay.

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
{
    static readonly string[] k_ToolbarItems = new[]
    {
        "MyToolbarItem",
        "SomeOtherToolbarItem"
    };

    public override VisualElement CreatePanelContent()
    {
        return new Label("I'm the content shown in panel mode!");
    }

    public IEnumerable<string> toolbarElements => k_ToolbarItems;
}

[EditorToolbarElement("SomeOtherToolbarItem", typeof(SceneView))]
class SomeOtherToolbarItem : EditorToolbarToggle
{
    public SomeOtherToolbarItem()
    {
        icon = EditorGUIUtility.FindTexture("CustomTool");
    }
}

// Example toolbar element with multiple controls
[EditorToolbarElement("MyToolbarItem", typeof(SceneView))]
class MyToolbarItem : OverlayToolbar
{
    public MyToolbarItem()
    {
        var icon = AssetDatabase.LoadAssetAtPath<Texture2D>("MyIcon");
        Add(new EditorToolbarButton(icon, () => { Debug.Log("Hello!"); }));
        Add(new EditorToolbarButton(icon, () => { Debug.Log("Hello again!"); }));
        SetupChildrenAsButtonStrip();
    }
}