Unityの無料カスタム追加エディターのショートカットキー

Editorでキーを監視する方法はいくつかあります。

1.メニューバー機能をカスタマイズします。

たとえば、F5キーはエディターを一時停止します

System.Collections を使用します。
System.Collections.Generic; を使用します。
UnityEditor を使用します。
UnityEngine を使用します。

public  class CustomKeys 
{ 
    [MenuItem(" Custom快捷键/暂停_F5 " )]
     static  void EditorPauseCommand()
    { 
        EditorApplication.isPaused =!EditorApplication.isPaused; 
    } 
}

APIリファレンス:http : //docs.unity3d.com/Documentation/ScriptReference/MenuItem.html

 

2. GUI更新時のOnSceneGUIモニター:

UnityEngine を使用します。
 UnityEditor を使用します。
 [CustomEditor(typeof (MySpecialMonoBehaviour))]
  パブリック クラス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登録イベント:

UnityEditor を使用します。
 UnityEngine を使用します。
 
 [InitializeOnLoad] 
 public  static  class EditorHotkeysTracker 
 { 
     static EditorHotkeysTracker()
     { 
         SceneView.onSceneGUIDelegate + = view => 
         { 
             var e = Event.current;
             if(e!= null && e.keyCode!= KeyCode.None)
                 Debug.Log(" エディターで押されたキー:" + e.keyCode); 
         }; 
     } 
 }

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

2番目と3番目の方法はUpdate()関数に似ています。ボタンを押すと、ボタンが複数回実行される可能性があり、同時に複数のボタンを監視するのは不便です。一般的に、グローバルショートカットキーとして、Ctrl / Shift / Altまたは他のボタンを同時に組み合わせる必要があります。通常のキーとの競合を防ぐため。個人的には、最初の方法がよりシンプルで信頼できると思います。

画像またはテキストを作成する場合、UGUIはメニューバーレベルから複数回クリックする必要があり(空のオブジェクトを作成してコンポーネントを追加する場合、問題が増えるだけです)、作成されたコントロールは依然として最外部レベルにあります。これは、現在選択されているオブジェクトの子オブジェクトに直接なり、毎回親オブジェクトの下に手動でドラッグする必要があります。別の方法としては、オブジェクトを右クリックして、ポップアップメニューでオブジェクトを再作成する方法があります。個人的には、これはかなり面倒だと思います。

NGUIの場合、ほとんどのコントロール作成には対応するショートカットキーがあり、新しく生成されたオブジェクトを現在選択されているコントロールの直下に配置すると、非常に効率的で高速です。

ここで、先ほど紹介した方法でUGUIコントロールを作成するためのショートカットキーを追加します。コントロールを作成するときに、テキストフォントを一般的なフォントに変更したり、配置色を設定したりするなど、いくつかのデフォルトの初期設定を同時に行うこともできます。

using UnityEngine;
 using UnityEditor;
 using UnityEngine.UI; 

// 選択したオブジェクトでの右クリックメニューの作成と直接ショートカットキーの作成の両方をサポートします
public  class UGUIHotKey 
{ 
    private  static GameObject CheckSelection(MenuCommand menuCommand)
    { GameObject 
        selectedObj = menuCommand.context as GameObject ;
         / / オブジェクトを右クリックする操作ではない場合は
        (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 "false6)] // APIドキュメントを参照してくださいという意味のパラメータは、上記へのリンクがあり、機能インタフェースいくつかの他のコールの意味をも記載されている
    静的な 無効はcreateImage(MenuCommand MenuCommand)
    { 
        ゲームオブジェクトselectedObj = CheckSelection(MenuCommand);
         IF(selectedObj ==null 返す; 
        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 "false6 )]
     static  voidCreateText(MenuCommand menuCommand)
    { 
        ゲームオブジェクト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; 

        テキストt = go.AddComponent <Text> ();
        Font font= AssetDatabase.LoadAssetAtPath(" Assets / ArtSources / Font / xxxx.ttf "typeof(Font))as Font; 
        t.font = font; 
        t.fontSize = 24 ; 
        t.alignment = TextAnchor.MiddleCenter; 
        t.color = Color.white; 
        t.text = " 新しいテキスト" ; 
        t.rectTransform.sizeDelta = new Vector2(150f、30f); 
    } 
}

 

おすすめ

転載: www.cnblogs.com/sanyejun/p/12718787.html