Unity添加自定义快捷键——UGUI快捷键
在Editor下监听按键有以下几种方式:
- 自定义菜单栏功能:
using UnityEngine;
using UnityEditor;
public static class MyMenuCommands {
[MenuItem("My Commands/First Command _p")]
static void FirstCommand() {
Debug.Log("You used the shortcut P");
}
[MenuItem("My Commands/Special Command %g")]
static void SpecialCommand() {
Debug.Log("You used the shortcut Cmd+G (Mac) Ctrl+G (Win)");
}
}api参考:http://docs.unity3d.com/Documentation/ScriptReference/MenuItem.html
- OnSceneGUI在GUI刷新中监听:
using UnityEngine;
using UnityEditor;
[CustomEditor(typeof(MySpecialMonoBehaviour))]
public class MyCustomEditor : Editor {
void OnSceneGUI() {
Event e = Event.current;
if(EventType.KeyDown == e.type && KeyCode.RightControl == e.keyCode)
{
moveMulti = true;
}
if(EventType.KeyUp == e.type && KeyCode.RightControl == e.keyCode)
{
moveMulti = false;
}
}
} - onSceneGUIDelegate注册事件:
using UnityEditor;
using UnityEngine; [InitializeOnLoad]
public static class EditorHotkeysTracker
{
static EditorHotkeysTracker()
{
SceneView.onSceneGUIDelegate += view =>
{
var e = Event.current;
if (e != null && e.keyCode != KeyCode.None)
Debug.Log("Key pressed in editor: " + e.keyCode);
};
}
}
详见:http://answers.unity3d.com/questions/381630/listen-for-a-key-in-edit-mode.html
方式二跟三类似Update()函数,当按键按下时可能会被多次执行,且不方便同时监听多个按键,一般来说作为全局快捷键应该同时组合ctrl/shift/alt或别的按键,以防跟普通按键冲突。个人认为方式一是更加简单可靠。
UGUI在想要创建一个Image或者Text时需要从菜单栏中级级点击多次才行(若是创建空物体再添加组件的方式只会更麻烦),而且创建的控件还是位于最外层层级中而不是直接成为我当前选中的物体的子物体,每次都得手动拖到父物体之下。另外一种方式就是右键点击一个物体,重弹出菜单中创建,个人觉得这样子也挺麻烦。
NGUI则大部分的控件创建都有对应的快捷键,且直接将新生成的物体放置到当前选中的控件之下,十分高效快捷。
现通过前面介绍的方式一为UGUI的控件创建添加快捷键,在创建控件的时你还可以同时进行一些默认初始设置,如改变Text的字体为常用字体,设置其对齐方式颜色等等:
using UnityEngine;
using UnityEditor;
using UnityEngine.UI; //同时支持在选中物体上右键菜单创建和直接快捷键创建
public class UGUIHotKey
{
private static GameObject CheckSelection (MenuCommand menuCommand)
{
GameObject selectedObj = menuCommand.context as GameObject;
//若当前不是右键点击物体的操作则看当前选中的物体的情况
if (selectedObj == null)
selectedObj = Selection.activeGameObject;
//当前没有选中物体或者选中的物体不在Canvas之下则返回空,按键不响应。(当然也可以不要求存在Canvas,没有时则先创建一个新的Canvas)
if (selectedObj == null || selectedObj != null && selectedObj.GetComponentInParent<Canvas> () == null)
return null;
return selectedObj;
} [MenuItem ("GameObject/UGUI/Image #&i", false, )] //参数意义请查阅API文档,上文有链接,函数中的几个其他接口的调用的含义也有介绍
static void CreateImage (MenuCommand menuCommand)
{
GameObject selectedObj = CheckSelection (menuCommand);
if (selectedObj == null)
return;
GameObject go = new GameObject ("Image");
GameObjectUtility.SetParentAndAlign (go, selectedObj);
Undo.RegisterCreatedObjectUndo (go, "Create " + go.name);
Selection.activeObject = go;
go.AddComponent<Image> ();
} [MenuItem ("GameObject/UGUI/Text #&t", false, )]
static void CreateText (MenuCommand menuCommand)
{
GameObject selectedObj = CheckSelection (menuCommand);
if (selectedObj == null)
return;
GameObject go = new GameObject ("Text");
GameObjectUtility.SetParentAndAlign (go, selectedObj);
Undo.RegisterCreatedObjectUndo (go, "Create " + go.name);
Selection.activeObject = go; Text t = go.AddComponent<Text> ();
Font font = AssetDatabase.LoadAssetAtPath ("Assets/ArtSources/Font/xxxx.ttf", typeof (Font)) as Font;
t.font = font;
t.fontSize = ;
t.alignment = TextAnchor.MiddleCenter;
t.color = Color.white;
t.text = "New Text";
t.rectTransform.sizeDelta = new Vector2 (150f, 30f);
}
}
Unity添加自定义快捷键——UGUI快捷键的更多相关文章
- Unity 3D的常用快捷键
Unity中的常用快捷键 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 Windows系统Unity3 ...
- 在Unity中使用UGUI修改Mesh绘制几何图形
在商店看到这样一个例子,表示很有兴趣,他们说是用UGUI做的.我想,像这种可以随便变形的图形,我第一个就想到了网格变形. 做法1: 细心的朋友应该会发现,每个UGUI可见元素,都有一个‘Canvas ...
- visual studio 2013常用快捷键 VS2013快捷键大全
visual studio 2013常用快捷键 VS2013快捷键大全 Visual Studio 2013 是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具 ...
- 关于Unity中的UGUI优化,你可能遇到这些问题
https://blog.uwa4d.com/archives/QA_UGUI-1.html 关于Unity中的UGUI优化,你可能遇到这些问题 作者:admin / 时间:2016年11月08日 / ...
- Java开发中的eclispe常用快捷键&全部快捷键
Java开发中的eclispe常用快捷键&全部快捷键 Ctrl+1 快速修复(经典快捷键)Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加)Ctrl+Alt+↑ ...
- UGUI 快捷键创建UGUI组件
使用NGUI的时候还有xxx快捷键创建, spirte,label,button等等. 在UGUI里面的时候好像是没有快捷键的. 不知道以后多久才能有这个功能. 在家里闲无聊的时候写了一个脚本, ...
- Android Studio一些常用快捷键及快捷键冲突解决
1. 最近在自学Android,也是边看书边写一些Demo,由于知识点越来越多,脑子越来越记不清楚,所以打算写成读书笔记,供以后查看,也算是把自己学到所理解的东西写出来,献丑,如有不对的地方,希望大家 ...
- Unity关于一个UGUI优化效率的方法
无意间发现了一个小技巧.如下图所示,可以发现UGUI的Image组件的RaycastTarget勾选以后会消耗一些效率,为了节省效率就不要勾选它了,不仅Image组件Text组件也有这样的问题. 一般 ...
- Mac快捷键 Xcode快捷键
Mac OSX 快捷键&命令行 一.Mac OSX 快捷键 ctrl+shift 快速放大dock的图标会暂时放大,而 ...
随机推荐
- c的详细学习(8)指针学习(二)
(1)指针与二维数组 一个数组的名字代表该数组的的首地址,是地址常量(作为形式参数的数组名除外),这一规定对二维数组或更高维数组同样适用. 在c语言中定义的任何一个二维数组实际上都可以看做是一个一维数 ...
- android6.0 外部存储设备插拔广播以及获取路径(U盘)【转】
本文转载自:https://blog.csdn.net/zhouchengxi/article/details/53982222 这里我将U盘作为例子来说明解析. android4.1版本时U盘插拔时 ...
- iptables原理及使用教程
注意 修改iptables可能导致连接断开, 对于远程连接的用户, 需要在经过充分测试后在修改, 对于懒人可以设置一个crontab, 在你修改iptables的过程中每隔30分钟清空一次iptabl ...
- 统计apachelog各访问状态个数(使用MapReduce)
统计日志文件中各访问状态的个数. 1.将日志数据上传到hdfs 路径 /mapreduce/data/apachelog/in 中 内容如下 ::::::: - - [/Feb/::: +] :::: ...
- IntelliJ IDEA Sringboot 项目部署到外部Tomcat服务器
<packaging>war</packaging> 添加依赖 <dependency> <groupId>org.springframework.bo ...
- PE.微PE
1.老毛桃,大白菜(20180227) ZC:我记得以前 "老毛桃"."大白菜" 之前的版本,在安装好系统之后,是没有捆绑软件的,.现在,老毛桃 安装完系统之后 ...
- Linux下查看Python安装了哪些脚本模块
Linux下查看Python安装了哪些脚本模块 1.什么是rpm ? rpm 即RedHat Package Management,是RedHat的发明之一 .现在包括OpenLinux.fedora ...
- spring学习(4)
在spring容器内拼凑bean叫做装配.装配bean的时候,需要告诉容器哪些bean以及容器如何使用依赖注入将它们配合在一起. 上下文定义文件的根元素是<beans>,<beans ...
- 模拟Windows任务管理器CPU使用率的动态折线图-农夫山泉
Delphi的TCanvas类可以实现各种复杂的图形输出功能,基于近期项目的需求,利用它实现了一个很炫的动态折线图(模拟了资源管理器中CPU使用率的折线图),可以直观地展现出数值的实时变化情况. 这段 ...
- QWidget、QMainWindow、QFrame、QWindow、QDialog、QScrollArea区别
QWidget是所有可视化控件的基类,可以直接渲染出一个窗口来. QMainWindow用来表示一个主窗口,这个主窗口可以设置菜单和工具栏 QFrame用来表示一个框架,用来当作容器,因为可以设置它的 ...