zoukankan      html  css  js  c++  java
  • Unity3D Layout 快捷键

    我的需求是开发的时候一种布局,运行的时候一种布局,Unity3D 选项中的自定义快捷键的太少,只能另想办法。Google 之后,找到解决方法:Editor layout hotkeys?

    1、创建菜单

    Unity3D 支持自定义菜单,在 Assets 目录下创建目录 Editor,然后创建脚本 Layout.cs,如下:

    using UnityEngine;
    using UnityEditor;
     
    public class Layout : EditorWindow {
     
        [MenuItem("Window/Layouts/Development Hotkey %#&e", false, 999)]
        static void Development() {
           EditorApplication.ExecuteMenuItem("Window/Layouts/Development");
        }
     
        [MenuItem("Window/Layouts/Run Hotkey %#&d", false, 999)]
        static void Run() {
           EditorApplication.ExecuteMenuItem("Window/Layouts/Run");
        }
     
    }

    以下,会在相应的菜单下增加菜单项,并且增加相应的快捷键 ctrl+shift+alt+e 和 ctrl+shift+alt+d,更多信息请参见:MenuItem

    另外,相应的 Layout 必须存在,如下:

    2、快捷键映射

    以上快捷键设置比较复杂,主要是防止快捷键冲突,如果能确保不冲突的话,这一步可以忽略。

    利用 AutoHotkey 进行快捷键映射,如下:

    f5::
    if WinActive("ahk_class UnityContainerWndClass")
    {
        Send ^p
        Send ^p
    }
    else
    {
        Send {f5}
    }
    Return
    f7::
    if WinActive("ahk_class UnityContainerWndClass")
    {
        Send ^!+e
        Send ^!+e
    }
    else
    {
        Send {f7}
    }
    Return
    f8::
    if WinActive("ahk_class UnityContainerWndClass")
    {
        Send ^!+d
        Send ^!+d
    }
    else
    {
        Send {f8}
    }
    Return

    这样,按 F5 是运行,F7 是开发模式,F8 是运行模式。

    3、打包 dll

    每新建一个工程,就需要在相应的目录下面增加 Editor 和 Layout.cs,有点麻烦,我想找到一个方法可以让 Unity3D 全局都运行这个脚本,目前还没找到方法,不过有其他的发现,就是可以通过 MonoDevelop 生成 C# Library 供 Unity3D 使用。

    打开 MonoDevelop 新建 Solution,选择 C# Library。将以上的 Layout.cs 拷贝到该工程下。

    接着在工程目录下的 References 右键编辑,将以下的 dll 加入工程引用: 

    D:Program Files (x86)UnityEditorDataManagedUnityEngine.dll
    D:Program Files (x86)UnityEditorDataManagedUnityEditor.dll

    然后 Build,生成的 dll 在 bin 目录下,拷贝到 Unity3D 工程的 Assets 目录下,最好创建一个专门的目录叫 Plugins,用于引用外部库。

    4、导出 Package

    新建工程的时候,会有一个对话框,提示你哪些包需要导入,而这些可选择的包都保存在 Unity3D 标准的 Packages 目录下面:

    D:Program Files (x86)UnityEditorStandard Packages

    所以,只要把自定义的包导出到该目录下,就可以在新建工程的时候直接导入。

    导出自定义包的方法非常简单,选定需要导出的目录或者文件,右键 Export Package,指定目录就行了。

    以下就是我的两种开发模式截图:

  • 相关阅读:
    【51NOD 1478】括号序列的最长合法子段
    【BZOJ 3527】【ZJOI 2014】力
    【BZOJ 2194】快速傅立叶之二
    【CodeVS 3123】高精度练习之超大整数乘法 &【BZOJ 2197】FFT快速傅立叶
    【BZOJ 2693】jzptab
    【BZOJ 2154】Crash的数字表格
    【BZOJ 3529】【SDOI 2014】数表
    【BZOJ 2820】YY的GCD
    【BZOJ 2301】【HAOI 2011】Problem b
    【POJ 3294】Life Forms 不小于k个字符串中的最长子串
  • 原文地址:https://www.cnblogs.com/yili16438/p/3746792.html
Copyright © 2011-2022 走看看