いんでぃーづ

ゲームいろいろ、いろいろ自由

Unity : SceneView でキー操作を検出してキャンセルする

カスタムエディターを作成しているときに、クリックやマウス移動やキー入力などをシーン中の操作(ショートカット)とは別に実装を行いたい場合があります。

例えば、シーンビューでオブジェクト選択中に R キーを押すと回転を調節するハンドラに切り替わりますが、
このキー入力をカスタムエディタでキャッチしてなおかつハンドラの切り替えをさせたくないという場合です。

Javascript でいうイベントバブリングの停止的なかんじ。

これをやるのは割と簡単で、Editor クラスの OnSceneGUI メソッドをオーバーライドし、
Event.current.Use(); をコールするだけです。

    public class TestCustomInspector : UnityEditor.Editor
    {
        void OnSceneGUI(SceneView sceneView)
        {
            switch (Event.current.type)
            {
                case EventType.KeyDown:
                    if (Event.current.keyCode == KeyCode.R)
                    {
                        Event.current.Use();
                    }
            }
        }
    }

でも 左クリックだけはキャンセルできない みたいです。なんでだろー

Editor-OnSceneGUI() - Unity スクリプトリファレンス

Event-Use - Unity スクリプトリファレンス


“Unity” and Unity logos are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere, and are used under license.


免責事項

当サイトの広告バナー、リンクによって提供される情報、サービス内容について、当サイトは一切の責任を負いません。

また、当サイトの情報を元にユーザ様が不利益を被った場合にも、当サイトは一切の責任を負いません。

すべて自己責任でお願いします。