へなちょこプログラマ blog

ゲーム制作・プログラミング・趣味について記載するブログ

【Unity】UGUI キー入力上手くいかない

目次

概要

UIメインのアプリケーションを作成時に、とあるボタンの動作でトラブった時の解決策のメモです。

状況

クリックで操作していたボタンに対して下記の操作を追加

        // Enterキーを押した際にでクリックで操作と同じ関数を呼び出す
        if (Input.GetKeyDown(KeyCode.Return)) {
            OnClickButton();
        }

発生した問題

Enterキーで同じ処理を呼び出しただけなのに、
Enterキーで処理させたい処理と+α別の処理が動いている⁉

意味わかんねー‼

色々調べてみると

色々試してみると、どうやら下記の2つの処理が動いてしまっていたようだ。

  1. Enterキーを押した際にスクリプトに記述した処理
  2. Enterキーを押すまでの手順で最後にクリックしたボタンの処理

Event Systemのナビゲーションのせい?
で最後に押したボタンにフォーカスが残っている。

そのせいでEnterを押した際に

  • Input.GetKeyDown()

  • 最後に押したボタンのクリックイベント

が同時に動作しているせいでおかしなことになっていたようだ。

そんなんしらんやん...  

解決した方法

Event System > Send Navigation Eventsのチェックを外す f:id:pandoraxssscan-929:20191218231614p:plain

個人的なメモですが、誰かの役に立てば幸いです。