【Unity】【C#】InputSystem.TouchPhase の IsActive(), IsEndedOrCanceled() [拡張メソッド] の具体値 
2020/10/03 Sat [edit]
InputSystem も Verified (正式版) となり、(旧)InputManager との混在も可能でもあるが、いずれ InputSystem の方法を中心として使いたいので勉強中。
現在は (旧)InputManager と InputSystem との対応を調査中だが、まだマニュアルにも詳しく説明が載ってないものもあるので、具体的に試してみた結果を書いておこう。
今回は InputSystem.TouchPhase の拡張メソッド IsActive(), IsEndedOrCanceled() がどういうものかわからなかったので(Description に何も書いてない[※掲載時点])、試してみた(InputSystem.InputExtensions クラスにある)。また、一覧としてまとめておくと見やすい気がするので、ついでに作ってみた。
(※) Unity 2019.4.11f1 / InputSystem 1.0.0 / Windows10(x64) で確認
■IsActive(InputSystem.TouchPhase)
●試したコード
using UnityEngine;
#if ENABLE_INPUT_SYSTEM
using UnityEngine.InputSystem;
using TouchPhase = UnityEngine.InputSystem.TouchPhase;
#endif
#if ENABLE_INPUT_SYSTEM
Debug.Log("Began = " + TouchPhase.Began.IsActive()); //True
Debug.Log("Canceled = " + TouchPhase.Canceled.IsActive()); //False
Debug.Log("Ended = " + TouchPhase.Ended.IsActive()); //False
Debug.Log("Moved = " + TouchPhase.Moved.IsActive()); //True
Debug.Log("None = " + TouchPhase.None.IsActive()); //False
Debug.Log("Stationary = " + TouchPhase.Stationary.IsActive()); //True
#endif
●IsActive(InputSystem.TouchPhase) 結果
Began | True |
---|---|
Canceled | False |
Ended | False |
Moved | True |
None | False |
Stationary | True |
結果は Began, Moved, Stationary が True になった。要するにタッチして操作している状態のようだ。
(旧)InputManager と照らし合わせれば、Input.GetMouseButton() の代わりになりそう(※GetMouseButton~ はタッチも取れる)。開始も含むがタッチの継続判定として利用できそう。
■IsEndedOrCanceled(InputSystem.TouchPhase)
●試したコード
using UnityEngine;
#if ENABLE_INPUT_SYSTEM
using UnityEngine.InputSystem;
using TouchPhase = UnityEngine.InputSystem.TouchPhase;
#endif
#if ENABLE_INPUT_SYSTEM
Debug.Log("Began = " + TouchPhase.Began.IsEndedOrCanceled()); //False
Debug.Log("Canceled = " + TouchPhase.Canceled.IsEndedOrCanceled()); //True
Debug.Log("Ended = " + TouchPhase.Ended.IsEndedOrCanceled()); //True
Debug.Log("Moved = " + TouchPhase.Moved.IsEndedOrCanceled()); //False
Debug.Log("None = " + TouchPhase.None.IsEndedOrCanceled()); //False
Debug.Log("Stationary = " + TouchPhase.Stationary.IsEndedOrCanceled()); //False
#endif
●IsEndedOrCanceled(InputSystem.TouchPhase) 結果
Began | False |
---|---|
Canceled | True |
Ended | True |
Moved | False |
None | False |
Stationary | False |
結果はメソッド名のままだが、Canceled, Ended が True になった。おおよそ IsActive() の反転値と考えて良い。ただし、None だけは未定義値みたいなもので、常に False となるようだ。
(旧)InputManager と照らし合わせれば、Input.GetMouseButtonUp() に近い(※GetMouseButton~ はタッチも取れる)。Ended は指を離したとき、Canceled はアプリからフォーカスが外れたときなどになるようだ。タッチの終了判定として利用できそう。
まだちょっと試しただけだが、InputSystem は反応も良い気がするし、設定 UI も割とわかりやすい。
ただ、今まで使っていた (旧)InputManager のコード(※主に Input) は全て書き換えないとならないので、大変な労力がいるね。
いずれ、スワイプ, ピンチ, 長押しなどのライブラリも InputSystem に対応しようと思っているが、ラッパー関数でも作らないと、旧新互換で作るのは骨が折れそうだ(笑)。
(関連記事)
【Unity】【C#】InputSystem の Mouse クラスと (旧)Input.GetMouseButton の対応
【Unity】【C#】InputSystem でマウスのホイール(scroll)取得と (旧)Input との対応
【Unity】【C#】InputSystem の Keyboard クラスと (旧)Input.GetKey の対応
【Unity】【C#】(旧)KeyCode と InputSystem.Key の対応
【Unity】【C#】InputSystem.Key をリアルタイムで調べる / Windows 日本語キーボードでの Key 一覧
【Unity】【C#】InputSystem の displayName や control path から Key (キーコード) を取得する
【Unity】【C#】スワイプ(フリック)を判定、方向を取得してコールバックする
【Unity】【C#】ピンチ操作を取得してコールバックする
【Unity】【C#】長押し(ロングタップ)を取得してコールバックする
- 関連記事
トラックバック
トラックバックURL
→http://fantom1x.blog130.fc2.com/tb.php/365-d2250b9e
この記事にトラックバックする(FC2ブログユーザー)
| h o m e |