前提・実現したいこと
Enterキーにのみ反応するInputFieldを作っています。
OnEndEditに関数を入れればEnterキーを押した際に反応することは知っているのですが、フォーカスが外れても反応してしまうため、Enterキーにのみ反応するInputFieldを作りたいと思い、関数を自作しました。
InputFieldにフォーカスしているか調べる機能を実装中に問題が発生しました。
発生している問題
InputFieldにフォーカスしているか確認するメソッドを入れたところ、Enterキーを押しても関数が呼ばれなくなりました。
調べてみたところ、Input.anyKeyDownメソッドにEnterKeyだけが反応しませんでした。
該当のソースコード
c#
1 2//途中までうまく行ったコード 3 4using System.Collections; 5using System.Collections.Generic; 6using UnityEngine; 7using UnityEngine.UI; 8 9public class TestScript : MonoBehaviour 10{ 11 public GameObject inputField_test; 12 13 void Update() 14 { 15 if (Input.anyKeyDown) //何かボタンが押されたら 16 { 17 Debug.Log("called1"); 18 IfPushEnter(); 19 } 20 } 21 22 //Enterが押されたら反応するメソッド 23 void IfPushEnter() 24 { 25 if (Input.GetKey(KeyCode.Return)) 26 { 27 Debug.Log("called2"); ←ここまで呼ばれます。 28 } 29 } 30} 31
c#
1 2//うまくいかなかったコード 3 4using System.Collections; 5using System.Collections.Generic; 6using UnityEngine; 7using UnityEngine.UI; 8 9public class TestScript : MonoBehaviour 10{ 11 public GameObject inputField_test; 12 13 14 void Update() 15 { 16 bool isForcus = inputField_test.GetComponent<InputField>().isFocused; 17 18 if(isForcus == true) 19 { 20 Debug.Log("called0"); ←ここは呼ばれます。 21 22 if (Input.anyKeyDown) //何かボタンが押されたら 23 { 24 Debug.Log("called1"); ←Enter以外のキーで呼ばれます。 25 IfPushEnter(); 26 } 27 } 28 } 29 30 //Enterが押されたら反応するメソッド 31 void IfPushEnter() 32 { 33 if (Input.GetKey(KeyCode.Return)) 34 { 35 Debug.Log("called2"); ←呼ばれません。 36 } 37 } 38 39 40} 41
なぜEnterキーにだけ反応しなくなったのでしょうか。
また、Enterキーにのみ反応するInputFieldの作り方がありましたらご教示ください。
補足情報(FW/ツールのバージョンなど)
Unity 2018.3.1f1 personal
VisualStudio 2017 community
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/02 01:57