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

  1. 自定义菜单栏功能:

     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

  2. 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;
    }
    }
    }
  3. 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快捷键的更多相关文章

  1. Unity 3D的常用快捷键

    Unity中的常用快捷键 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 Windows系统Unity3 ...

  2. 在Unity中使用UGUI修改Mesh绘制几何图形

    在商店看到这样一个例子,表示很有兴趣,他们说是用UGUI做的.我想,像这种可以随便变形的图形,我第一个就想到了网格变形. 做法1: 细心的朋友应该会发现,每个UGUI可见元素,都有一个‘Canvas ...

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

    visual studio 2013常用快捷键 VS2013快捷键大全   Visual Studio 2013 是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具 ...

  4. 关于Unity中的UGUI优化,你可能遇到这些问题

    https://blog.uwa4d.com/archives/QA_UGUI-1.html 关于Unity中的UGUI优化,你可能遇到这些问题 作者:admin / 时间:2016年11月08日 / ...

  5. Java开发中的eclispe常用快捷键&全部快捷键

    Java开发中的eclispe常用快捷键&全部快捷键 Ctrl+1 快速修复(经典快捷键)Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加)Ctrl+Alt+↑ ...

  6. UGUI 快捷键创建UGUI组件

      使用NGUI的时候还有xxx快捷键创建, spirte,label,button等等. 在UGUI里面的时候好像是没有快捷键的. 不知道以后多久才能有这个功能.  在家里闲无聊的时候写了一个脚本, ...

  7. Android Studio一些常用快捷键及快捷键冲突解决

    1. 最近在自学Android,也是边看书边写一些Demo,由于知识点越来越多,脑子越来越记不清楚,所以打算写成读书笔记,供以后查看,也算是把自己学到所理解的东西写出来,献丑,如有不对的地方,希望大家 ...

  8. Unity关于一个UGUI优化效率的方法

    无意间发现了一个小技巧.如下图所示,可以发现UGUI的Image组件的RaycastTarget勾选以后会消耗一些效率,为了节省效率就不要勾选它了,不仅Image组件Text组件也有这样的问题. 一般 ...

  9. Mac快捷键 Xcode快捷键

    Mac OSX 快捷键&命令行   一.Mac OSX 快捷键 ctrl+shift                                    快速放大dock的图标会暂时放大,而 ...

随机推荐

  1. 每天一个Linux命令(21)find命令_xargs参数

    xargs 与 exec 的作用类似,但是xargs与find 一起使用时,一般配合管道一起使用. 前面的输出转换为后方指令的参数输入,使用exec和xargs可以使用户对所匹配到的文件执行几乎所有的 ...

  2. Data Structure Binary Tree: Construct Full Binary Tree from given preorder and postorder traversals

    http://www.geeksforgeeks.org/full-and-complete-binary-tree-from-given-preorder-and-postorder-travers ...

  3. 【Flask】filter 常用查询条件

    1. equal    2. not equal  3. like, ilike  4.in  5. not in 6. is null  7. is not null  8. and  9. or ...

  4. 20145229吴姗珊 《Java程序设计》第8周学习总结

    20145229吴姗珊 <Java程序设计>第8周总结 教材学习内容总结 第十四章 NIO与NIO2 NIO: InputStream.OutputStream的输入输出,基本上是以字节为 ...

  5. 最短路N题Tram SPFA

     #include <algorithm>#include <queue>#include <cstdio>#include <cstdlib>#inc ...

  6. JsonSchema使用详解

    JSON Schema是一个用于验证JSON数据结构的强大工具, 我查看并学习了JSON Schema的官方文档, 做了详细的记录, 分享一下. 我们可以使用JSON Schema在后续做接口测试中做 ...

  7. 《python基础教程(第二版)》学习笔记 字符串(第3章)

    <python基础教程(第二版)>学习笔记 字符串(第3章)所有的基本的序列操作(索引,分片,乘法,判断成员资格,求长度,求最大最小值)对字符串也适用.字符串是不可以改变的:格式化输出字符 ...

  8. RSA加密方法java工具类

    package com.qianmi.weidian.common.util; import java.io.ByteArrayOutputStream; import java.security.K ...

  9. linux应用之vim的常用命令

    vim 选择文本,删除,复制,粘贴 文本的选择,对于编辑器来说,是很基本的东西,也经常被用到,总结如下: v 从光标当前位置开始,光标所经过的地方会被选中,再按一下v结束. V 从光标当前行开始,光标 ...

  10. Bootstrap-other内置组件

    1.缩略图 缩略图在网站中最常用的地方就是产品列表页面,一行显示几张图片,有的在图片底下(左侧或右侧)带有标题.描述等信息.Bootstrap框架将这一部独立成一个模块组件.并通过“thumbnail ...