如何在Unity Editor中添加类似Unity Services的按钮?
实现Unity编辑器顶部工具栏自定义按钮(类似Services按钮)
你要的这种位于编辑器主视图顶部工具栏的按钮,可以通过Unity的EditorToolbar API实现,该API从Unity 2021.1版本开始提供,以下是具体实现步骤:
实现步骤
- 在项目中创建
Editor文件夹(编辑器代码必须放在此目录下,否则不会生效) - 在该文件夹下创建C#脚本,比如命名为
CustomToolbarButton.cs,写入以下代码:
using UnityEditor; using UnityEngine.UIElements; [EditorToolbar] public class CustomToolbarButton : EditorToolbarElement { // 控制按钮在工具栏的位置,数值越大越靠右(默认Services按钮顺序约为50) private const int ToolbarOrder = 100; public CustomToolbarButton() { // 创建工具栏按钮,指定点击回调和显示文本 var customButton = new ToolbarButton(OnButtonTriggered) { text = "我的自定义按钮", tooltip = "点击执行自定义操作" }; // 可选:给按钮设置图标 // customButton.icon = EditorGUIUtility.IconContent("d_ServiceIcon").image; Add(customButton); } // 按钮点击后的逻辑 private void OnButtonTriggered() { Debug.Log("自定义工具栏按钮被点击!"); // 这里可以添加你的业务逻辑,比如打开自定义窗口、执行批量处理等 } // 指定按钮显示在SceneView和GameView的顶部工具栏 [EditorToolbarElement(id: "Custom.Toolbar.Button", typeof(SceneView))] [EditorToolbarElement(id: "Custom.Toolbar.Button", typeof(GameView))] public class CustomToolbarButtonInstance : CustomToolbarButton { public CustomToolbarButtonInstance() : base() { SetPosition(ToolbarZone.TopToolbar, ToolbarOrder); } } }
关键说明
- 该API仅支持Unity 2021.1及以上版本,如果你使用更早版本,不推荐用反射修改工具栏(容易因版本更新失效)
- 通过
ToolbarOrder可以调整按钮在工具栏的位置,数值越大越靠右 - 可以通过USS样式表自定义按钮外观,或者设置
icon属性替换为自定义图标 - 代码中指定了按钮在SceneView和GameView都显示,你可以根据需求添加或移除视图类型
内容的提问来源于stack exchange,提问作者Adnan Faize
相关产品推荐
相关产品推荐

