前提・実現したいこと
Input SystemのInput Actionの実装方法で、マウスの左クリックとモバイルのタップをFireアクションとして登録したのですが、
マウスの左クリックでは何回も処理が反応するのに対し、タップの方では処理が1回だけしか反応しないので、
対処法のご教示をお願いいたします。
試したこと
以下のようにバインディングしました。
・MyInput.cs
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.InputSystem; 5 6public class MyInput : MonoBehaviour 7{ 8 9 [SerializeField] InputAction _fireAction; 10 [SerializeField] GameObject cube; 11 12 // Start is called before the first frame update 13 void Start() 14 { 15 _fireAction.performed += _ => cube.transform.localScale *= 1.2f; 16 } 17 18 private void OnEnable() 19 { 20 _fireAction.Enable(); 21 } 22 23 private void OnDisable() 24 { 25 _fireAction.Disable(); 26 } 27 28 void OnDestroy() 29 { 30 _fireAction.Dispose(); 31 } 32}
実行すると、Unityエディタ上でマウスの左クリックをする毎に、キューブが大きくなっていく様子が確認できるのですが、
Android実機で試すと、1回目のタップだけキューブが大きくなり、それ以降は何度タップしてもキューブのサイズが変わりません。
(かなりタップし続けましたが、変化があったのは、毎回Unityアプリを起動したときの1回目のタップのみです。
AndroidでUnityアプリを起動する度に、1回目のタップだけキューブの大きさが変わります。)
不思議なのは、1回目だけのタップの処理に反応しているということです
(1回も反応しないのであれば、何かしらの設定がおかしいと予想がつくのですが)。
また、BuildAndRunで一度アプリをAndroidに送り込んだら、PCとの接続を外して、Androidは他デバイスに接続していない状態で試してみたりもしましたが、やはり状況は変わらず、1回目だけのタップの処理に反応という結果でした。
ご教示お願い致します。
補足情報(FW/ツールのバージョンなど)
Unity 2020.1.2f1 (64-bit)
追記①
さらにMouseとTouchscreenのDeltaのアクションを追加して試したところ、Android実機でDeltaの取得が
何回でも取れていることがAndroid LogCatで確認できました。
Android実機上で、TouchscreenのDeltaが取得し続けられているので、
そう考えるとFireアクションのTouchscreenのタッチが、
他デバイス(Mouse)の方に奪われているというのは考えにくいのかなと思いました。
追記②
さらに、Touch #0 [Touchscreen] を Primary Touch [Touchscreen] に変更してみましたが、
やはり結果は変わりませんでした。
Primary Touchは1回しか反応しませんが、TouchscreenのDeltaは反応し続けました。
あなたの回答
tips
プレビュー