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的图标会暂时放大,而 ...
随机推荐
- butterknif
// butterknife public class ButterknifeActivity extends Activity { @butterknife.Bind(R.id.tv_title) ...
- rails dependent
dependent 可以設定當物件刪除時,也會順便刪除它的 has_many 物件: class Event < ActiveRecord::Base has_many :attendees, ...
- yii 资料
https://github.com/forecho/awesome-yii2 会随时更新 链接:http://pan.baidu.com/s/1mgCKtUK 密码:t6t1 与<YII框架& ...
- Redis缓存全自动安装shell脚本
我只是把命令放到shell文件中了,方便安装,代码如下: #!/bin/bash # shell的执行选项: # -n 只读取shell脚本,但不实际执行 # -x 进入跟踪方式,显示所执行的每一条命 ...
- mysqldump导出格式
#导出大表:mysqldump --add-drop-table --single-transaction --triggers -R -quick --disable-keys -utest -pt ...
- Java强引用、 软引用、 弱引用、虚引用
Java强引用. 软引用. 弱引用.虚引用 2012-07-09 1.对象的强.软.弱和虚引用 在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象.也 ...
- java的远程访问接口的实例
被别人远程调用和自己远程调用别人接口的理解: 被别人调用接口:其实没有什么神秘的,就是我们写一个正常的方法提供一个访问路径. 调用别人的接口:本质时一个Request请求,实际要使用到javax.ne ...
- Unity3D中Mathf数学运算函数总结
引入: 看到一个案例注意到函数Mathf.SmoothDamp的使用,游戏中用于做相机的缓冲跟踪和boss直升机跟踪士兵.该函数是Unity3D中Mathf数学运算函数中的一个.一些游戏使用了smoo ...
- php 冒泡排序原理
$start = microtime(true); $popArr = array(6,3,23,1,5,100,399,99,66); echo '6,3,23,1,5,100,399,99 ...
- 在程序中对ArrayList进行排序,并剔除重复元素
import java.util.*; class sortDemo { public static void main(String[] args) { ArrayList<Object> ...