unity 在toolbar处添加按钮

using System;
using System.Reflection;
using UnityEngine;
using UnityEditor;
using UnityEngine.UIElements; [InitializeOnLoad]
public static class CruToolbar
{
private static readonly Type kToolbarType = typeof(Editor).Assembly.GetType("UnityEditor.Toolbar");
private static ScriptableObject sCurrentToolbar; static CruToolbar()
{
EditorApplication.update += OnUpdate;
} private static void OnUpdate()
{
if (sCurrentToolbar == null)
{
UnityEngine.Object[] toolbars = Resources.FindObjectsOfTypeAll(kToolbarType);
sCurrentToolbar = toolbars.Length > 0 ? (ScriptableObject) toolbars[0] : null;
if (sCurrentToolbar != null)
{
FieldInfo root = sCurrentToolbar.GetType()
.GetField("m_Root", BindingFlags.NonPublic | BindingFlags.Instance);
VisualElement concreteRoot = root.GetValue(sCurrentToolbar) as VisualElement; VisualElement toolbarZone = concreteRoot.Q("ToolbarZoneRightAlign");
VisualElement parent = new VisualElement()
{
style =
{
flexGrow = 1,
flexDirection = FlexDirection.Row,
}
};
IMGUIContainer container = new IMGUIContainer();
container.onGUIHandler += OnGuiBody;
parent.Add(container);
toolbarZone.Add(parent);
}
}
} private static void OnGuiBody()
{
//自定义按钮加在此处
GUILayout.BeginHorizontal();
if (GUILayout.Button(new GUIContent("热重载", EditorGUIUtility.FindTexture("PlayButton"))))
{
Debug.Log("HotReload");
BuildAssemblieEditor.BuildLogic();
} GUILayout.EndHorizontal();
}
}

https://github.com/smkplus/CustomToolbar

这个很不错,而且轻量化,推荐
视频:https://www.youtube.com/watch?v=NBARPT-APCg
https://github.com/marijnz/unity-toolbar-extender
unity 在toolbar处添加按钮的更多相关文章
- Unity NGUI 2D场景添加按钮
比如说先添加一个sprite 在sprite加上NGUI的 UI Button 然后重点来了 加上Box Collider 2D(重点:2D 千万不要加 Box Collider) 将Box Col ...
- 通过store为toolbar添加按钮
目的是实现导航条toolbar可以动态加载按钮. ExtJS的版本是4.0. 实现方案有两个.方案一:添加render事件监听,在监听事件处理函数中使用Ext.Ajax获取按钮信息,实现动态添加按钮. ...
- PyQt(Python+Qt)学习随笔:Qt Designer中怎么给toolBar添加按钮
在Designer中创建了一个MainWindow窗体,当想在其中的toolBar中添加toolButton时发现怎么也放不上去,最终才发现toolBar中的按钮只能通过直接拖拽Action编辑器中的 ...
- 如何往IE工具条添加按钮(转载)
如何往IE工具条添加按钮 问题提出:金山词霸.网络蚂蚁等软件安装后会向IE的工具条添加自己的按钮.按下按钮后还会作出相应的动作,这种功能是如何实现的呢?读完本文,您也可以将自己应用程序的按钮添加到IE ...
- 关于FlexPaper 2.1.2版本 二次开发 Logo 、打印、搜索、缩略图、添加按钮、js交互、右键菜单、书签等相关问题
2015-03-02 更新文章,由于需求修改,更改了flexpaper插件,故增加第9.10.11小节,下载代码时请注意. 先废话几句.最近用到文档在线浏览功能,之前用的是print2flash(一个 ...
- Unity NGUI 创建简单的按钮
Unity版本:4.5.1 NGUI版本:3.6.5 注意NGUI版本,网上的大部分教程都是2.x版本的,在步骤上面略有不同,此文适合初学者. 示例: 通过NGUI创建一个背景和按钮. 1.首先创建一 ...
- Stimulsoft.Report.web viewer控件添加按钮
当你购买了带源码的时候,你可以对源码进行修改以达到自己想要的效果,比较这里讲到的,向viewer控件工具栏添加按钮. 通过源码目录可以看出我们需要修改的有两部分代码 红色方块圈中的部分,[StiWeb ...
- iOS 封装添加按钮的方法
添加按钮 #pragma mark 添加按钮 - (void)addButtonWithImage:(NSString *)image highImage:(NSString *)highImage ...
- 今天遇到的点击添加按钮button_click代码段无法执行的问题
首先:本人小白一枚,刚入行,如有表述不当的地方,还请多多指教 网页界面如图: 当点击添加按钮后断点测试进入后台代码运行: 代码会先执行Page_Load页面,当加载完后Page_Load代码会跳转到m ...
- java 24 - 3 GUI之添加按钮
需求:把按钮添加到窗体,并对按钮添加一个点击事件. A:创建窗体对象 B:创建按钮对象 C:把按钮添加到窗体 D:窗体显示 注意:这里对按钮添加点击事件,同样使用监听器. 但是,这里的按钮是组件,所以 ...
随机推荐
- K8s新手系列之Service资源
概述 官方文档:https://kubernetes.io/zh-cn/docs/concepts/services-networking/service/ 在kubernetes中,pod是应用程序 ...
- 私有网盘部署-Cloudreve网盘
前言 关于私有网盘,企业级网盘可选可道云,filebroser,seafile等.关于私有网盘,笔者推荐Cloudreve. 无论是从使用角度看,WebDa.离线下载.分享管理.文件检索,还是管理角度 ...
- VirtualBox 导入/注册 虚拟机文件 .vbox 失败
VirtualBox 导入/注册 虚拟机文件 .vbox 失败 问题情景 Error: Failed to open virtual machine located in <.vbox所在目录& ...
- 浅析领域驱动模型VO、DTO、BO、PO 等的概念、区别及其用法
摘要:浅析POJO.DTO.DO.VO.BO.PO和Entity等的概念.区别及其用法. 名词解释 领域模型中的实体类分为四种模型:VO.DTO.DO和PO,各种实体类用于不同业务层次间的交互,并 ...
- Spring扩展接口-FactoryBean
.markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...
- ArkUI-X在Android上使用Fragment开发指南
本文介绍将ArkUI框架的UIAbility跨平台部署至Android平台Fragment的使用说明,实现Android原生Fragment和ArkUI跨平台Fragment的混合开发,方便开发者灵活 ...
- Solon AI 五步构建 RAG 服务:2025 最新 AI + 向量数据库实战
此文参考自:https://www.toutiao.com/article/7506140643970826779/ 引言:RAG 会成为 2025 年 AI 落地核心? 在2025年,检索增强生成( ...
- 「CF798E」 Mike and code of a permutation
\(O(n^2)\)做法 让第\(i\)个点向\(p_j(p_j>p_i)\)的点连边 首先\(i\)肯定能连向\(a_i\),若当\(a_i==-1\),那么当前所有没打过标记的点向\(i\) ...
- 数据库in的数据量超过了数据库的限制 Cause: org.postgresql.util.PSQLException: An I/O error occurred while sending to the backend.
//调用 List<user> data = new ArrayList<>(); List<user> rows = getPersonResult(person ...
- Java 开发者无痛迁移到 Cursor 开启AI编程新生涯
习惯了IntelliJ IDEA的Java开发者,想尝试Cursor.Windsurf或Trae这类新兴的AI IDE,却担心迁移成本? 本文分享我的实战经验,帮助你高效切换开发环境,保留核心效率.效 ...