FC2ブログ
ヽ|∵|ゝ(Fantom) の 開発blog? ホーム » Unity »【Unity】【C#】InputSystem.TouchPhase の IsActive(), IsEndedOrCanceled() [拡張メソッド] の具体値

【Unity】【C#】InputSystem.TouchPhase の IsActive(), IsEndedOrCanceled() [拡張メソッド] の具体値  


 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) 結果
BeganTrue
CanceledFalse
EndedFalse
MovedTrue
NoneFalse
StationaryTrue

 結果は 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) 結果
BeganFalse
CanceledTrue
EndedTrue
MovedFalse
NoneFalse
StationaryFalse

 結果はメソッド名のままだが、Canceled, Ended が True になった。おおよそ IsActive() の反転値と考えて良い。ただし、None だけは未定義値みたいなもので、常に False となるようだ

 (旧)InputManager と照らし合わせれば、Input.GetMouseButtonUp() に近い(※GetMouseButton~ はタッチも取れる)。Ended は指を離したとき、Canceled はアプリからフォーカスが外れたときなどになるようだ。タッチの終了判定として利用できそう



 まだちょっと試しただけだが、InputSystem は反応も良い気がするし、設定 UI も割とわかりやすい。

 ただ、今まで使っていた (旧)InputManager のコード(※主に Input) は全て書き換えないとならないので、大変な労力がいるね。

 いずれ、スワイプ, ピンチ, 長押しなどのライブラリも InputSystem に対応しようと思っているが、ラッパー関数でも作らないと、旧新互換で作るのは骨が折れそうだ(笑)。



スワイプ, ピンチ, 長押しなども同梱されている多機能 Android プラグイン







(関連記事)
【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#】長押し(ロングタップ)を取得してコールバックする


関連記事
スポンサーサイト



category: Unity

thread: ゲーム開発

janre: コンピュータ

tag: Unityリファレンス  InputSystem  一覧 
tb: 0   cm: --


トラックバック

トラックバックURL
→http://fantom1x.blog130.fc2.com/tb.php/365-d2250b9e
この記事にトラックバックする(FC2ブログユーザー)

プロフィール

Social

検索フォーム

全記事一覧

カテゴリ

ユーザータグ

最新記事

リンク

PR

▲ Pagetop