Unity添加自定义快捷键——UGUI快捷键

在Editor下监听按键有以下几种方式:

  1. 自定义菜单栏功能:

     1 using UnityEngine;
     2  using UnityEditor;
     3  public static class MyMenuCommands {
     4      [MenuItem("My Commands/First Command _p")]
     5      static void FirstCommand() {
     6          Debug.Log("You used the shortcut P");
     7      }
     8      [MenuItem("My Commands/Special Command %g")]
     9      static void SpecialCommand() {
    10          Debug.Log("You used the shortcut Cmd+G (Mac)  Ctrl+G (Win)");
    11      }
    12  }

    api参考:http://docs.unity3d.com/Documentation/ScriptReference/MenuItem.html

  2. OnSceneGUI在GUI刷新中监听:

     1 using UnityEngine;
     2  using UnityEditor;
     3  [CustomEditor(typeof(MySpecialMonoBehaviour))]
     4  public class MyCustomEditor : Editor {
     5      void OnSceneGUI() {
     6          Event e = Event.current;
     7          if(EventType.KeyDown == e.type && KeyCode.RightControl == e.keyCode)
     8          {
     9              moveMulti = true;
    10          }
    11          if(EventType.KeyUp == e.type && KeyCode.RightControl == e.keyCode)
    12          {
    13              moveMulti = false;
    14          }
    15      }
    16  }
  3. onSceneGUIDelegate注册事件:

     1  using UnityEditor;
     2  using UnityEngine;
     3
     4  [InitializeOnLoad]
     5  public static class EditorHotkeysTracker
     6  {
     7      static EditorHotkeysTracker()
     8      {
     9          SceneView.onSceneGUIDelegate += view =>
    10          {
    11              var e = Event.current;
    12              if (e != null && e.keyCode != KeyCode.None)
    13                  Debug.Log("Key pressed in editor: " + e.keyCode);
    14          };
    15      }
    16  }

详见:http://answers.unity3d.com/questions/381630/listen-for-a-key-in-edit-mode.html

方式二跟三类似Update()函数,当按键按下时可能会被多次执行,且不方便同时监听多个按键,一般来说作为全局快捷键应该同时组合ctrl/shift/alt或别的按键,以防跟普通按键冲突。个人认为方式一是更加简单可靠。

UGUI在想要创建一个Image或者Text时不得不从菜单栏中级级点击多次才行(若是创建空物体再添加组件的方式只会更麻烦),而且创建的控件还是位于最外层层级中而不是直接成为我当前选中的物体的子物体,每次都得手动拖到父物体之下。

NGUI则大部分的控件创建都有对应的快捷键,且直接将新生成的物体放置到当前选中的控件之下,十分高效快捷。

现通过前面介绍的方式一为UGUI的控件创建添加快捷键,在创建控件的时你还可以同时进行一些默认初始设置,如改变Text的字体为常用字体,设置其对齐方式颜色等等:

 1 using UnityEngine;
 2 using UnityEditor;
 3 using UnityEngine.UI;
 4
 5 //同时支持在选中物体上右键菜单创建和直接快捷键创建
 6 public class UGUIHotKey
 7 {
 8     private static GameObject CheckSelection (MenuCommand menuCommand)
 9     {
10         GameObject selectedObj = menuCommand.context as GameObject;
11         //若当前不是右键点击物体的操作则看当前选中的物体的情况
12         if (selectedObj == null)
13             selectedObj = Selection.activeGameObject;
14         //当前没有选中物体或者选中的物体不在Canvas之下则返回空,按键不响应。(当然也可以不要求存在Canvas,没有时则先创建一个新的Canvas)
15         if (selectedObj == null || selectedObj != null && selectedObj.GetComponentInParent<Canvas> () == null)
16             return null;
17         return selectedObj;
18     }
19
20     [MenuItem ("GameObject/UGUI/Image #&i", false, 6)] //参数意义请查阅API文档,上文有链接,函数中的几个其他接口的调用的含义也有介绍
21     static void CreateImage (MenuCommand menuCommand)
22     {
23         GameObject selectedObj = CheckSelection (menuCommand);
24         if (selectedObj == null)
25             return;
26         GameObject go = new GameObject ("Image");
27         GameObjectUtility.SetParentAndAlign (go, selectedObj);
28         Undo.RegisterCreatedObjectUndo (go, "Create " + go.name);
29         Selection.activeObject = go;
30         go.AddComponent<Image> ();
31     }
32
33     [MenuItem ("GameObject/UGUI/Text #&t", false, 6)]
34     static void CreateText (MenuCommand menuCommand)
35     {
36         GameObject selectedObj = CheckSelection (menuCommand);
37         if (selectedObj == null)
38             return;
39         GameObject go = new GameObject ("Text");
40         GameObjectUtility.SetParentAndAlign (go, selectedObj);
41         Undo.RegisterCreatedObjectUndo (go, "Create " + go.name);
42         Selection.activeObject = go;
43
44         Text t = go.AddComponent<Text> ();
45         Font font = AssetDatabase.LoadAssetAtPath ("Assets/ArtSources/Font/xxxx.ttf", typeof (Font)) as Font;
46         t.font = font;
47         t.fontSize = 24;
48         t.alignment = TextAnchor.MiddleCenter;
49         t.color = Color.white;
50         t.text = "New Text";
51         t.rectTransform.sizeDelta = new Vector2 (150f, 30f);
52     }
53 }
时间: 2024-10-04 08:42:57

Unity添加自定义快捷键——UGUI快捷键的相关文章

GJM :Unity UI 之 UGUI 开发

转载URL:http://www.manew.com/thread-41633-1-1.html 最近因为要做各种UI控件,于是与UGUI杠上了.首当其冲的就是RectTransform,最坑爹的是,这货竟然不是UGUI框架的,代码竟然封装在unityengine里面,所以,不得不吐槽下unity的开源动机,根本就是留一手,估计只是因为自己的研发力量不足,所以开放一部分出来而已.       RectTransform继承于Transform,配合Canvas专门交给UGUI使用,具体这边就不展

VS操作快捷键+系统快捷键

VS操作快捷键+系统快捷键 调试程序快捷键 编译程序:F7 运行程序:ctrl + F5 打断点:F9 运行到断点位置:F5 单步执行:F10 单步进入函数:F11 结束调试:shift+F5 注释代码:ctrl+k,ctrl+c 解注释代码:ctrl+k,ctrl+u ps:某些机器需要配合Fn进行转转功能键. VS快捷键--(用颜色标注的是我使用时常用的,其实这个全凭个人喜好啦!!!) 编辑.删除行Ctrl + Shift + L删除所有选定行:如果没有选定行,则删除当前行. 编辑.转换为大

visual studio 2013常用快捷键 VS2013快捷键大全

visual studio 2013常用快捷键 VS2013快捷键大全 Visual Studio 2013 是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具.代码管控工具.集成开发环境(IDE)等等.VS 2013 中新增了很多提高开发人员工作效率的新功能,比如自动补全方括号.使用快捷键移动整行或整块的代码等: 合理使用快捷键可以提高开发效率.但是Visual Studio提供的快捷键多如牛毛,那我们有没有必要掌握所有快捷键的使用方法呢,答案因人而异.就我

Unity添加自定义拓展方法

Shepherdog|2014-04-08 10:50|16151次浏览|Unity(373)0 通常你会发现你不能修改正在使用的那些类,无论它是基础的数据类型还是已有框架的一部分,它提供的方法让你困苦不堪.不过..C# 提供了一种巧妙的方式来让你扩充已有的类,也就是我们今天要讲的扩展方法. 扩展方法由于很方便而被经常使用到,我们更愿意叫他语法糖豆(syntactic sugar),一个实用样例是Unity的Transform类,比如:你只想设置Transform.position中Vector

UGUI 快捷键创建UGUI组件

  使用NGUI的时候还有xxx快捷键创建, spirte,label,button等等. 在UGUI里面的时候好像是没有快捷键的. 不知道以后多久才能有这个功能.  在家里闲无聊的时候写了一个脚本, 可以方便的创建UGUI组件(Button,Image,Text,InputFile等等) 快捷键列表如下: Text Shift+Alt+L Button Shift+Alt+B Image Shift+Alt+S InputField Shift+Alt+I   代码部分: using Unit

Java开发中的eclispe常用快捷键&amp;全部快捷键

Ctrl+1 快速修复(经典快捷键)Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加)Ctrl+Alt+↑ 复制当前行到上一行(复制增加)Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)Alt+↑ 当前行和上面一行交互位置(同上)Alt+← 前一个编辑的页面Alt+→ 下一个编辑的页面(当然是针对上面那条来说了)Alt+Enter 显示当前选择资源(工程,or 文件 or文件)的属性Shift+Enter 在当前行的下一行插入空行(这时鼠标

使用Doxygen + graphviz生成Unity 3d的UGUI类图

下载软件 1) Graphviz,下载地址:http://download.csdn.net/detail/u010953266/8591169 为什么不用官网?一是下载速度慢,二是下载到本地的文件貌似是有损坏的,每次安装都报错,后来直接放弃了,从其它地方搜到的: 2)Doxygen,下载地址:https://sourceforge.net/projects/doxygen/ 3)Unity UGUI的源码,下载地址:https://bitbucket.org/Unity-Technologie

unity 3D之ugui Scroll Rect拖拽消息冲突问题

如题. ugui的诞生很大程度的改变了NGUI一手遮天的现状.但是Ugui也由于与Ngui有极大的相似之处被人认为是Ngui的私生子.Ugui是unity亲生的UI系统,在各个地方都有照顾,所以也被越来越多的人认识.越来越多的游戏.应用也逐渐采用ugui去开发.但ugui始终没有Ngui的浑厚,很多功能也亟待改善. 1.Ugui界面开发之Scroll Rect 拖拽是游戏中需要显示较多物体的主要方式,表现在界面上就需要用到诸如Scroll Rect等方式. 2.创建一个Scroll Rect U

Unity NGUI和UGUI与模型、特效的层级关系

目录 1.介绍两大UI插件NGUI和UGUI 2.unity渲染顺序控制方式 3.NGUI的控制 4.UGUI的控制 5.模型深度的控制 6.粒子特效深度控制 7.NGUI与模型和粒子特效穿插层级管理 8.UGUI与模型和粒子特效穿插层级管理 写在前面 这篇笔记是整理了之前做的记录,在做项目的过程中,遇到了各种各样的界面穿插问题,界面层级混乱,比如,手机卡了或点快了,就导致两个界面相互交叉.对于界面,这应该算是一个很严重的bug,很大部分原因是整个UI框架没有从整体上考虑这个,后来决心弄清楚层级