- 2020/11/11 【Unity】【エディタ拡張】ヒエラルキー(シーン)の Image, RawImage に使われている画像(Texture)を検出するエディタ拡張(ツール)
- 2020/10/21 【Unity】InputSystem 対応 ダブル/トリプル(n回)クリック操作ライブラリ (FantomPlugin 追加機能)
- 2020/10/20 【Unity】InputSystem 対応 長押し操作ライブラリ (FantomPlugin 追加機能)
- 2020/10/19 【Unity】InputSystem 対応 スワイプ(フリック) 操作ライブラリ (FantomPlugin 追加機能)
- 2020/10/18 【Unity】InputSystem 対応 ピンチ操作ライブラリ (FantomPlugin 追加機能)
« prev next »
【Unity】【エディタ拡張】ヒエラルキー(シーン)の Image, RawImage に使われている画像(Texture)を検出するエディタ拡張(ツール) 
2020/11/11 Wed [edit]
1つのアプリの開発を長く続けていると「あれ?この画像もう使ってなかったような…?」なんてこと良くある。バージョンアップによって不要になった画像や、アイコン(UI)を変更したり、プロジェクト内には残ってるけど、実際のシーン(ヒエラルキー)上には使ってなかったり。だけど、いきなり削除してしまうと、万が一使ってるものがあったら、画像が抜けてしまう…。
そんなときに利用するツール。プロジェクトビューからツールに画像を指定して、検索ボタン(Search)を押せば、今開いているシーンの全ての Image, RawImage にセットされている画像と比較して、検出してくれる。
検索結果をクリックすれば、オブジェクトを選択してくれるし、検出後に [Select] ボタンを押せば、全てを選択してくれるので、画像を一気に入れ替えるなども簡単だ。
ここではツールのマニュアル的なものを書いておこう。
(※) Unity 2019.4.14f1 / Windows10(x64) で確認
■AttachedImageFinder のインポートと起動
パッケージのインポートダイアログでは、ツール本体(スクリプト)とテスト用のシーンが入っている。「_Test」以下はテスト用のサンプルシーンなので、ツールだけで良いなら、スクリプトだけでも良い。

ツール(スクリプト)をインポートしたら、「Tools」メニュー以下に「Attached Image Finder」が追加されるので、そこから起動しよう。

■AttachedImageFinder の使い方
「Tools」メニューから起動したら、「検索画像(Texture)」に画像をセットしよう。プロジェクトビューからドロップしても良いし、ボックスの一番右にある◎を押して、画像を選択しても良い。

デフォルトでは(None のとき)ヒエラルキーの全てのオブジェクトから検索するが、範囲を絞り込みたいときは、検索開始となる Transform をヒエラルキーからドロップしてセットしよう。セットした場合はその位置以下の階層からしか検出しなくなる。
「検索オプション」の Image, RawImage はチェックを付けたものにセットされている画像から検出する。


検索後は結果をクリックするか、「Select」ボタンを押せば、結果全てを選択できる。

ちなみに、ヒエラルキーの階層を一気に展開するには、親を選択した後で、[Alt] + [→] (開く), [Alt] + [←] (閉じる) のショートカットを使うと便利だ。
あとは画像を入れ替えたり、削除したりと自分の好きにすれば良い。
使い方は難しくないだろう。
AttachedImageFinder はスクリプトだけでできているので、自由にコピペして新しいツールでも作ってみるのも良いだろう。そのほとんどの機能が前回までの Transform 系の便利メソッドで作られている。誰かの役に立つのであれば、公開した甲斐があるというものである(笑)。
(関連記事)
【Unity】【C#】シーン(ヒエラルキー)のルートにある Transform を全て取得する(非アクティブも含む)
【Unity】【C#】非アクティブも含めて、全ての GameObject からコンポーネントを取得する
【Unity】【C#】Transfrom (GameObject) のパス名を取得する
【Unity】【C#】非アクティブも含めて、Transform (GameObject) をパス名で取得する
【Unity】【C#】ヒエラルキー(シーン)の全てのオブジェクト(Transform)をスキャンして処理をする
【Unity】【C#】EventSystem を InputSystem 用に置き換えると、スクロールビュー等の移動が速過ぎる
- 関連記事
category: Unity
thread: ゲーム開発
janre: コンピュータ
tag: Unityライブラリ Unityプラグイン エディタ拡張 Transform FantomPlugin【Unity】InputSystem 対応 ダブル/トリプル(n回)クリック操作ライブラリ (FantomPlugin 追加機能) 
2020/10/21 Wed [edit]
InputSystem も Verified (正式版) となり、色々と調査して概要もわかってきたので、今まで作った操作系のライブラリも更新してみた。
ただ、調査記事にも書いてあるが、現在の InputSystem は微妙に不安定な箇所もあり、Unity 公式にいくつかバグレポとして出しておいたが、「確認できず」という返信も貰っている。ただ私の環境では確実に起こる不具合もあるので、もしかしたら、InputSystem はハードウェア依存もあるのかも知れない(私は「Windows 日本語106キーボード」だが、Unityの中の人は「Mac 英語104キーボード」を使っているとしたら、不具合が見つけづらいという可能性もある[※掲載時点:InputSystem 1.0.0])。
なので、一気に InputSystem に移行するのはやめた方が良いだろう。幸いにも現在は(掲載時点:Unity2019.4.12f1)(旧)InputManager との混在も可能なので、動作確認が取れたものだけ使う方が良いだろう(できる限り色々な機器で試した方が良いと思われる ← 一部の人だけ使えないという問題が起こる可能性がある)。
そのため、完全互換とまではいかないかも知れないが、新旧システムどちらも使えるように入力関連の機能を中心に更新してみた。InputSystem のバージョンが上がったら、修正するかも知れないが、とりあえず 旧 InputManager の仕様に似せた実装なので、使い勝手はほとんど変わらないだろう。
ちなみに、スクリプトは大きく分けて、「~Input」と「~EventTrigger」となっているが、~Input は画面の全体や一部での検出、~EventTrigger はアタッチした UI 上での検出と考えて良い。また、~Input はイベント検出した瞬間以外に、ポーリング的な使い方もできるが、~EventTrigger はイベント検出した瞬間のみという違いもある。
ここでは、簡単な使い方や注意点などをまとめておいた。とりあえずの参考にして欲しい。
●MultiClickInput / MultiClickEventTrigger (クリック/タッチ)
・Valid Area 図解
※他の操作は別ページにあります。
■ピンチ操作
■スワイプ(フリック) 操作
■長押し操作
(※) Unity 2019.4.12f1 / InputSystem 1.0.0 / Windows10(x64) / Android 8.0 で確認
■ダブル/トリプル(n回)クリック操作
●MultiClickInput / MultiClickEventTrigger
主にPCではマウスクリック、モバイルではタッチとなるが、一定時間内で指定回数クリックを検出する。指定回数が 1 以上なら、その回数が押されたタイミングで検出されるが、指定回数が無い(0)のときは、一定時間内のクリック数を押されるたびに検出する。それらは、OnMultiClick のコールバックでクリック回数を検知できる。
MultiClickInput は画面全体、または一部(画面の上半分、下半分など)での操作を取得するのに向いている。空の GemeObject にアタッチして使う。
MultiClickEventTrigger は UI 上での操作を取得するのに向いている。Button や Image など、Raycast Target をオンにして、同じ GameObject にアタッチする。Canvas に Graphic Raycaster がないとイベントが取得できないので注意しよう。インスペクタの設定は一部の有無だけで(Valid Area, Use InputSystem If Both Handling 等)、基本的には同じだ。

(インスペクタ)
Use InputSystem If Both Handling | ActiveInputHandling(Edit>Player Settings>Other Settings>Active Input Handling)が Both のとき、InputSystem を使う(※Both 以外のときは表示されません) オン:InputSystem / オフ: (旧)InputManager |
---|---|
Click Count | 検出するクリック回数 (1 以上のとき、指定回数で検出 / 0 のとき、有効時間内の全てのクリックを検出) |
Valid Time | 最初の1回から有効な時間 [秒] (この時間以内でクリックをカウントする。超えたときは、最初から(1から)) |
Valid Area | 認識する画面上の領域(0.0~1.0)[(0,0):画面左下, (1,1):画面右上] ※図解参照 |
▼Callbacks | |
OnMultiClick | n回クリックイベント発生コールバック int は検出したクリック回数を表す。 Click Count > 0 のとき、指定数に達した瞬間 / 0 のとき、有効時間内でクリックのたび (1, 2, 3,… ) |
※Debug Tools は主に Valid Area を可視化します。
※Game ビューの解像度に依存します。上手く反映されない場合は、Game ビューをいじってみて下さい。
(Valid Area 図解)
Valid Area は、画面左下を (0, 0) とし、画面の最大幅と高さを (1, 1) としたときの全体比で指定する。つまり、0.5 だと画面の長さの半分で、0.25 だと 1/4 である。つまり、解像度が変わっても位置は変わらないことになる(ただし、縦置き・横置きで回転する場合は注意)。基本的に他の ~Input 系の Valid Area も同じようになっている。画面全体での位置となるので(画面の上半分で操作、下半分は使わないなどに向いている)、UI 上に限定したいなら、~EventTrigger 系を使った方が良いだろう。
(例)
X: 0 | Y: 0.25 |
W: 1 | H: 0.6 |

(関連記事)
【Unity】InputSystem 対応 ピンチ操作ライブラリ (FantomPlugin 追加機能)
【Unity】InputSystem 対応 スワイプ(フリック) 操作ライブラリ (FantomPlugin 追加機能)
【Unity】InputSystem 対応 長押し操作ライブラリ (FantomPlugin 追加機能)
【Unity】【C#】ピンチ操作を取得してコールバックする
【Unity】【C#】スワイプ(フリック)を判定、方向を取得してコールバックする
【Unity】【C#】長押し(ロングタップ)を取得してコールバックする
【Unity】【C#】SmoothFollow3(SmoothFollow に回転・遠近・高さ操作とピンチ・スワイプとの連携機能を付けた拡張版)
【Unity】【C#】(旧)KeyCode と InputSystem.Key の対応
【Unity】【C#】InputSystem の Keyboard クラスと (旧)Input.GetKey の対応
【Unity】【C#】InputSystem の Mouse クラスと(旧)Input.GetMouseButton の対応
【Unity】【C#】InputSystem.Key をリアルタイムで調べる / Windows 日本語キーボードでの Key 一覧
【Unity】【C#】InputSystem でマウスのホイール(scroll)取得と (旧)Input との対応
【Unity】【C#】InputSystem.TouchPhase の IsActive(), IsEndedOrCanceled() [拡張メソッド] の具体値
【Unity】【C#】InputSystem の displayName や control path から Key (キーコード) を取得(変換)する
【Unity】【C#】InputSystem で Android のバックキーの isPressed がなぜか一定時間で false になる?
【Unity】【C#】EventSystem を InputSystem 用に置き換えると、スクロールビュー等の移動が速過ぎる
- 関連記事
category: Unity
thread: ゲーム開発
janre: コンピュータ
tag: Unityプラグイン Unityライブラリ InputSystem FantomPlugin【Unity】InputSystem 対応 長押し操作ライブラリ (FantomPlugin 追加機能) 
2020/10/20 Tue [edit]
InputSystem も Verified (正式版) となり、色々と調査して概要もわかってきたので、今まで作った操作系のライブラリも更新してみた。
ただ、調査記事にも書いてあるが、現在の InputSystem は微妙に不安定な箇所もあり、Unity 公式にいくつかバグレポとして出しておいたが、「確認できず」という返信も貰っている。ただ私の環境では確実に起こる不具合もあるので、もしかしたら、InputSystem はハードウェア依存もあるのかも知れない(私は「Windows 日本語106キーボード」だが、Unityの中の人は「Mac 英語104キーボード」を使っているとしたら、不具合が見つけづらいという可能性もある[※掲載時点:InputSystem 1.0.0])。
なので、一気に InputSystem に移行するのはやめた方が良いだろう。幸いにも現在は(掲載時点:Unity2019.4.12f1)(旧)InputManager との混在も可能なので、動作確認が取れたものだけ使う方が良いだろう(できる限り色々な機器で試した方が良いと思われる ← 一部の人だけ使えないという問題が起こる可能性がある)。
そのため、完全互換とまではいかないかも知れないが、新旧システムどちらも使えるように入力関連の機能を中心に更新してみた。InputSystem のバージョンが上がったら、修正するかも知れないが、とりあえず 旧 InputManager の仕様に似せた実装なので、使い勝手はほとんど変わらないだろう。
ちなみに、スクリプトは大きく分けて、「~Input」と「~EventTrigger」となっているが、~Input は画面の全体や一部での検出、~EventTrigger はアタッチした UI 上での検出と考えて良い。また、~Input はイベント検出した瞬間以外に、ポーリング的な使い方もできるが、~EventTrigger はイベント検出した瞬間のみという違いもある。
ここでは、簡単な使い方や注意点などをまとめておいた。過去記事と合わせて参考にして欲しい。
●LongClickInput / LongClickEventTrigger (クリック/タッチ)
・Valid Area 図解
●LongKeyInput (キーボード)
※他の操作は別ページにあります。
■ピンチ操作
■スワイプ(フリック) 操作
■ダブル/トリプル(n回)クリック操作
(※) Unity 2019.4.12f1 / InputSystem 1.0.0 / Windows10(x64) / Android 8.0 で確認
■長押し(クリック/タッチ)操作
●LongClickInput / LongClickEventTrigger
主にPCではマウスクリック、モバイルではタッチとなるが、一定時間押しっぱなしにされている状態(開始と継続)を検出する。これらはプロパティ(IsLongClick)をポーリング的に取得するか、OnLongClick, OnStart, OnProgress, OnCancel のコールバックでタイミングを検知できる。
LongClickInput は画面全体、または一部(画面の上半分、下半分など)での操作を取得するのに向いている。空の GemeObject にアタッチして使う。
LongClickEventTrigger は UI 上での操作を取得するのに向いている。Button や Image など、Raycast Target をオンにして、同じ GameObject にアタッチする。Canvas に Graphic Raycaster がないとイベントが取得できないので注意しよう。インスペクタの設定は一部の有無だけで(Valid Area, Use InputSystem If Both Handling 等)、基本的には同じだ。
その他、コードなどの解説は以前の記事を参照して欲しい。

(インスペクタ)
Use InputSystem If Both Handling | ActiveInputHandling(Edit>Player Settings>Other Settings>Active Input Handling)が Both のとき、InputSystem を使う(※Both 以外のときは表示されません) オン:InputSystem / オフ: (旧)InputManager |
---|---|
Valid Time | 長押しとして認識する時間 [秒] (これより長い時間で長押しとして認識する。短いときは無視する:OnCancel が発火する) |
Valid Area | 認識する画面上の領域(0.0~1.0)[(0,0):画面左下, (1,1):画面右上] ※図解参照 |
▼Callbacks | |
OnLongClick | 長押しイベントコールバック Valid Time を超えて押した瞬間 |
OnStart | 長押し・進捗開始のイベントコールバック クリック(タッチ)した瞬間。ただし、複数のときは無効 |
OnProgress | 進捗のイベントコールバック 押下継続中。値は Valid Time を1とし、0~1f(x100 で%を表す) |
OnCancel | 進捗中断のイベントコールバック 指を離したり、範囲外に出たときなど、長押しとして認識できなかったとき |
プロパティ)
IsLongClick | 長押し検出 (フレーム毎判定) 長押しとして認識された瞬間のみ true。それ以外のときは常に false |
---|
※Debug Tools は主に Valid Area を可視化します。
※Game ビューの解像度に依存します。上手く反映されない場合は、Game ビューをいじってみて下さい。
(Valid Area 図解)
Valid Area は、画面左下を (0, 0) とし、画面の最大幅と高さを (1, 1) としたときの全体比で指定する。つまり、0.5 だと画面の長さの半分で、0.25 だと 1/4 である。つまり、解像度が変わっても位置は変わらないことになる(ただし、縦置き・横置きで回転する場合は注意)。基本的に他の ~Input 系の Valid Area も同じようになっている。画面全体での位置となるので(画面の上半分で操作、下半分は使わないなどに向いている)、UI 上に限定したいなら、~EventTrigger 系を使った方が良いだろう。
(例)
X: 0 | Y: 0.25 |
W: 1 | H: 0.6 |

■長押し(キーボード)操作
●LongKeyInput
主にPCではキーボード、モバイルではバックキー(Android)となるが、一定時間押しっぱなしにされている状態(開始と継続)を検出する。これらはプロパティ(IsLongPress)をポーリング的に取得するか、OnLongPress, OnStart, OnProgress, OnCancel のコールバックでタイミングを検知できる。
基本的には、クリック/タッチ操作をキー操作に代えたものと考えて良い。

(インスペクタ)
Use InputSystem If Both Handling | ActiveInputHandling(Edit>Player Settings>Other Settings>Active Input Handling)が Both のとき、InputSystem を使う(※Both 以外のときは表示されません) オン:InputSystem / オフ: (旧)InputManager |
---|---|
Target Key | 長押しを検出するキー。InputSystem では Key, (旧)InputManager では KeyCode で指定する。 ※Key と KeyCode は互換性が無い場合があるので注意(特に記号、機能キー)。 また、設定値(enum)は別々のフィールドで定義されているため、Use InputSystem If Both Handling やシステム自体を切り替えたとき、初期化されることがあります(ヒエラルキーの EventSystem もシステムに合わせて更新した方が良い)。 |
Valid Time | 長押しとして認識する時間 [秒] (これより長い時間で長押しとして認識する。短いときは無視する:OnCancel が発火する) |
▼Callbacks | |
OnLongPress | 長押しイベントコールバック Valid Time を超えて、長押しとして認識した瞬間 |
OnStart | 長押し・進捗開始のイベントコールバック クリック(タッチ)した瞬間。ただし、複数のときは無効 |
OnProgress | 進捗のイベントコールバック 押下継続中。値は Valid Time を1とし、0~1f(x100 で%を表す) |
OnCancel | 進捗中断のイベントコールバック 指を離したり、範囲外に出たときなど、長押しとして認識できなかったとき |
(プロパティ)
IsLongPress | 長押し検出 (フレーム毎判定) 長押しとして認識された瞬間のみ true。それ以外のときは常に false |
---|
(関連記事)
【Unity】InputSystem 対応 ピンチ操作ライブラリ (FantomPlugin 追加機能)
【Unity】InputSystem 対応 スワイプ(フリック) 操作ライブラリ (FantomPlugin 追加機能)
【Unity】InputSystem 対応 ダブル/トリプル(n回)クリック操作ライブラリ (FantomPlugin 追加機能)
【Unity】【C#】ピンチ操作を取得してコールバックする
【Unity】【C#】スワイプ(フリック)を判定、方向を取得してコールバックする
【Unity】【C#】長押し(ロングタップ)を取得してコールバックする
【Unity】【C#】SmoothFollow3(SmoothFollow に回転・遠近・高さ操作とピンチ・スワイプとの連携機能を付けた拡張版)
【Unity】【C#】(旧)KeyCode と InputSystem.Key の対応
【Unity】【C#】InputSystem の Keyboard クラスと (旧)Input.GetKey の対応
【Unity】【C#】InputSystem の Mouse クラスと(旧)Input.GetMouseButton の対応
【Unity】【C#】InputSystem.Key をリアルタイムで調べる / Windows 日本語キーボードでの Key 一覧
【Unity】【C#】InputSystem でマウスのホイール(scroll)取得と (旧)Input との対応
【Unity】【C#】InputSystem.TouchPhase の IsActive(), IsEndedOrCanceled() [拡張メソッド] の具体値
【Unity】【C#】InputSystem の displayName や control path から Key (キーコード) を取得(変換)する
【Unity】【C#】InputSystem で Android のバックキーの isPressed がなぜか一定時間で false になる?
【Unity】【C#】EventSystem を InputSystem 用に置き換えると、スクロールビュー等の移動が速過ぎる
- 関連記事
category: Unity
thread: ゲーム開発
janre: コンピュータ
tag: Unityプラグイン Unityライブラリ InputSystem FantomPlugin【Unity】InputSystem 対応 スワイプ(フリック) 操作ライブラリ (FantomPlugin 追加機能) 
2020/10/19 Mon [edit]
InputSystem も Verified (正式版) となり、色々と調査して概要もわかってきたので、今まで作った操作系のライブラリも更新してみた。
ただ、調査記事にも書いてあるが、現在の InputSystem は微妙に不安定な箇所もあり、Unity 公式にいくつかバグレポとして出しておいたが、「確認できず」という返信も貰っている。ただ私の環境では確実に起こる不具合もあるので、もしかしたら、InputSystem はハードウェア依存もあるのかも知れない(私は「Windows 日本語106キーボード」だが、Unityの中の人は「Mac 英語104キーボード」を使っているとしたら、不具合が見つけづらいという可能性もある[※掲載時点:InputSystem 1.0.0])。
なので、一気に InputSystem に移行するのはやめた方が良いだろう。幸いにも現在は(掲載時点:Unity2019.4.12f1)(旧)InputManager との混在も可能なので、動作確認が取れたものだけ使う方が良いだろう(できる限り色々な機器で試した方が良いと思われる ← 一部の人だけ使えないという問題が起こる可能性がある)。
そのため、完全互換とまではいかないかも知れないが、新旧システムどちらも使えるように入力関連の機能を中心に更新してみた。InputSystem のバージョンが上がったら、修正するかも知れないが、とりあえず 旧 InputManager の仕様に似せた実装なので、使い勝手はほとんど変わらないだろう。
ちなみに、スクリプトは大きく分けて、「~Input」と「~EventTrigger」となっているが、~Input は画面の全体や一部での検出、~EventTrigger はアタッチした UI 上での検出と考えて良い。また、~Input はイベント検出した瞬間以外に、ポーリング的な使い方もできるが、~EventTrigger はイベント検出した瞬間のみという違いもある。
ここでは、簡単な使い方や注意点などをまとめておいた。過去記事と合わせて参考にして欲しい。
●SwipeInput / SwipeEventTrigger
・Valid Area 図解
※他の操作は別ページにあります。
■ピンチ操作
■長押し操作
■ダブル/トリプル(n回)クリック操作
(※) Unity 2019.4.12f1 / InputSystem 1.0.0 / Windows10(x64) / Android 8.0 で確認
■スワイプ(フリック)操作
●SwipeInput / SwipeEventTrigger
主にモバイル操作用となるが、タッチされた1本の指の4方向と移動量[px]を返す。これらはそれぞれのプロパティ(Direction, DirectionRaw)をポーリング的に取得するか、OnSwipe, OnSwipeRawのコールバックで取得できる。
SwipeInput は画面全体、または一部(画面の上半分、下半分など)での操作を取得するのに向いている。空の GemeObject にアタッチして使う。
SwipeEventTrigger は UI 上での操作を取得するのに向いている。Button や Image など、Raycast Target をオンにして、同じ GameObject にアタッチする。Canvas に Graphic Raycaster がないとイベントが取得できないので注意しよう。インスペクタの設定は Valid Area の有無だけで、基本的には同じだ。
その他、コードなどの解説は以前の記事を参照して欲しい。

(インスペクタ)
Use InputSystem If Both Handling | ActiveInputHandling(Edit>Player Settings>Other Settings>Active Input Handling)が Both のとき、InputSystem を使う(※Both 以外のときは表示されません) オン:InputSystem / オフ: (旧)InputManager |
---|---|
Width Reference | 画面幅(Screen.width)を Valid Width の比率の基準にする [画面幅を1とした比率] (オフ: 高さ(Screen.height)を基準にする:画面の高さを1とした比率) |
Valid Width | スワイプとして認識する移動量の画面比 [画面幅に対する比率] (0.0~1.0:1.0で端から端まで。この値より長い移動量でスワイプとして認識する) |
Timeout | スワイプとして認識する時間 [秒] (これより短い時間でスワイプとして認識する。長いときは無視する) |
Valid Area | 認識する画面上の領域(0.0~1.0)[(0,0):画面左下, (1,1):画面右上] ※図解参照 |
▼Callbacks | |
OnSwipe | スワイプ方向コールバック Vector.left / .right / .up / .down のいずれか |
OnSwipeRaw | スワイプ方向の補正なし値コールバック タッチ開始から終了の方向ベクトル [px] |
(プロパティ)
Direction | スワイプ方向コールバック Vector.left / .right / .up / .down のいずれか |
---|---|
DirectionRaw | スワイプ方向の補正なし値コールバック タッチ開始から終了の方向ベクトル [px] |
※Debug Tools は主に Valid Area を可視化します。
※Game ビューの解像度に依存します。上手く反映されない場合は、Game ビューをいじってみて下さい。
(Valid Area 図解)
Valid Area は、画面左下を (0, 0) とし、画面の最大幅と高さを (1, 1) としたときの全体比で指定する。つまり、0.5 だと画面の長さの半分で、0.25 だと 1/4 である。つまり、解像度が変わっても位置は変わらないことになる(ただし、縦置き・横置きで回転する場合は注意)。基本的に他の ~Input 系の Valid Area も同じようになっている。画面全体での位置となるので(画面の上半分で操作、下半分は使わないなどに向いている)、UI 上に限定したいなら、~EventTrigger 系を使った方が良いだろう。
(例)
X: 0 | Y: 0.25 |
W: 1 | H: 0.6 |

(関連記事)
【Unity】InputSystem 対応 ピンチ操作ライブラリ (FantomPlugin 追加機能)
【Unity】InputSystem 対応 長押し操作ライブラリ (FantomPlugin 追加機能)
【Unity】InputSystem 対応 ダブル/トリプル(n回)クリック操作ライブラリ (FantomPlugin 追加機能)
【Unity】【C#】ピンチ操作を取得してコールバックする
【Unity】【C#】スワイプ(フリック)を判定、方向を取得してコールバックする
【Unity】【C#】長押し(ロングタップ)を取得してコールバックする
【Unity】【C#】SmoothFollow3(SmoothFollow に回転・遠近・高さ操作とピンチ・スワイプとの連携機能を付けた拡張版)
【Unity】【C#】(旧)KeyCode と InputSystem.Key の対応
【Unity】【C#】InputSystem の Keyboard クラスと (旧)Input.GetKey の対応
【Unity】【C#】InputSystem の Mouse クラスと(旧)Input.GetMouseButton の対応
【Unity】【C#】InputSystem.Key をリアルタイムで調べる / Windows 日本語キーボードでの Key 一覧
【Unity】【C#】InputSystem でマウスのホイール(scroll)取得と (旧)Input との対応
【Unity】【C#】InputSystem.TouchPhase の IsActive(), IsEndedOrCanceled() [拡張メソッド] の具体値
【Unity】【C#】InputSystem の displayName や control path から Key (キーコード) を取得(変換)する
【Unity】【C#】InputSystem で Android のバックキーの isPressed がなぜか一定時間で false になる?
【Unity】【C#】EventSystem を InputSystem 用に置き換えると、スクロールビュー等の移動が速過ぎる
- 関連記事
category: Unity
thread: ゲーム開発
janre: コンピュータ
tag: Unityプラグイン Unityライブラリ InputSystem FantomPlugin【Unity】InputSystem 対応 ピンチ操作ライブラリ (FantomPlugin 追加機能) 
2020/10/18 Sun [edit]
InputSystem も Verified (正式版) となり、色々と調査して概要もわかってきたので、今まで作った操作系のライブラリも更新してみた。
ただ、調査記事にも書いてあるが、現在の InputSystem は微妙に不安定な箇所もあり、Unity 公式にいくつかバグレポとして出しておいたが、「確認できず」という返信も貰っている。ただ私の環境では確実に起こる不具合もあるので、もしかしたら、InputSystem はハードウェア依存もあるのかも知れない(私は「Windows 日本語106キーボード」だが、Unityの中の人は「Mac 英語104キーボード」を使っているとしたら、不具合が見つけづらいという可能性もある[※掲載時点:InputSystem 1.0.0])。
なので、一気に InputSystem に移行するのはやめた方が良いだろう。幸いにも現在は(掲載時点:Unity2019.4.12f1)(旧)InputManager との混在も可能なので、動作確認が取れたものだけ使う方が良いだろう(できる限り色々な機器で試した方が良いと思われる ← 一部の人だけ使えないという問題が起こる可能性がある)。
そのため、完全互換とまではいかないかも知れないが、新旧システムどちらも使えるように入力関連の機能を中心に更新してみた。InputSystem のバージョンが上がったら、修正するかも知れないが、とりあえず 旧 InputManager の仕様に似せた実装なので、使い勝手はほとんど変わらないだろう。
ちなみに、スクリプトは大きく分けて、「~Input」と「~EventTrigger」となっているが、~Input は画面の全体や一部での検出、~EventTrigger はアタッチした UI 上での検出と考えて良い。また、~Input はイベント検出した瞬間以外に、ポーリング的な使い方もできるが、~EventTrigger はイベント検出した瞬間のみという違いもある。
ここでは、簡単な使い方や注意点などをまとめておいた。過去記事と合わせて参考にして欲しい。
●PinchInput / PinchEventTrigger
・Valid Area 図解
※他の操作は別ページにあります。
■スワイプ(フリック) 操作
■長押し操作
■ダブル/トリプル(n回)クリック操作
(※) Unity 2019.4.12f1 / InputSystem 1.0.0 / Windows10(x64) / Android 8.0 で確認
■ピンチ操作
●PinchInput / PinchEventTrigger
主にモバイル操作用となるが、タッチされた2本の指の間隔を画面サイズで正規化された値orピクセル(Width)、ピンチ幅(距離)の直前との差分(Delta)、ピンチ開始時の幅(距離)を1とし、現在の幅の比(Ratio)を取得できる。これらはそれぞれのプロパティ(Widt, Deltah, Ratio)をポーリング的に取得するか、OnPinchStart, OnPinch のコールバックでも取得可能だ。
その他、コードなどの解説は以前の記事を参照して欲しい。

(インスペクタ)
Use InputSystem If Both Handling | ActiveInputHandling(Edit>Player Settings>Other Settings>Active Input Handling)が Both のとき、InputSystem を使う(※Both 以外のときは表示されません) オン:InputSystem / オフ: (旧)InputManager |
---|---|
Is Normalized | 画面幅(or 高さ)で正規化した値でコールバックする(オフ: ピクセル単位で返す) |
Width Reference | Is Normalized がオンのとき、画面幅(Screen.width)を基準にする [単位が px / Screen.width になる:画面幅を1とした比率=画面解像度に依存しない値] (オフ: 高さ(Screen.height)を基準にする:画面の高さを1とした比率) |
Valid Area | 認識する画面上の領域(0.0~1.0)[(0,0):画面左下, (1,1):画面右上] ※図解参照 |
▼Callbacks | |
OnPinchStart | ピンチ開始コールバック Width(ピンチ幅(距離)), center(2指間の中心座標) ※Is Normalized がオンのときは画面幅で正規化した値で、オフのときは px 単位になる |
OnPinch | ピンチ中コールバック(伸縮率とその差分) Width(ピンチ幅(距離)), Delta(直前のピンチ幅(距離)との差分), Ratio(ピンチ開始時の幅を1とし、現在の幅の比率) ※Is Normalized がオンのときは画面幅で正規化した値で、オフのときは px 単位になる |
(プロパティ)
IsPinching | ピンチ操作中フラグ(指2本のみ。3本~は無効) |
---|---|
Width | ピンチ幅(指2本間の距離) ※Is Normalized がオンのときは画面幅で正規化した値で、オフのときは px 単位になる |
Delta | 直前のピンチ幅(距離)との差分 ※Is Normalized がオンのときは画面幅で正規化した値で、オフのときは px 単位になる |
Ratio | ピンチ開始時の幅(距離)を1とし、現在の幅の比率 (指を開く→ 1.0以上(1,2,3,...倍[小数含む]/指を閉じる→ 1.0より下(1/2, 1/3, 1/4,...倍[負にはならない])) ※1以上が開く動作で、1以下が閉じる動作と判断できる |
※Debug Tools は主に Valid Area を可視化します。
※Game ビューの解像度に依存します。上手く反映されない場合は、Game ビューをいじってみて下さい。
(Valid Area 図解)
Valid Area は、画面左下を (0, 0) とし、画面の最大幅と高さを (1, 1) としたときの全体比で指定する。つまり、0.5 だと画面の長さの半分で、0.25 だと 1/4 である。つまり、解像度が変わっても位置は変わらないことになる(ただし、縦置き・横置きで回転する場合は注意)。基本的に他の ~Input 系の Valid Area も同じようになっている。画面全体での位置となるので(画面の上半分で操作、下半分は使わないなどに向いている)、UI 上に限定したいなら、~EventTrigger 系を使った方が良いだろう。
(例)
X: 0 | Y: 0.25 |
W: 1 | H: 0.6 |

(関連記事)
【Unity】InputSystem 対応 スワイプ(フリック) 操作ライブラリ (FantomPlugin 追加機能)
【Unity】InputSystem 対応 長押し操作ライブラリ (FantomPlugin 追加機能)
【Unity】InputSystem 対応 ダブル/トリプル(n回)クリック操作ライブラリ (FantomPlugin 追加機能)
【Unity】【C#】ピンチ操作を取得してコールバックする
【Unity】【C#】スワイプ(フリック)を判定、方向を取得してコールバックする
【Unity】【C#】長押し(ロングタップ)を取得してコールバックする
【Unity】【C#】SmoothFollow3(SmoothFollow に回転・遠近・高さ操作とピンチ・スワイプとの連携機能を付けた拡張版)
【Unity】【C#】(旧)KeyCode と InputSystem.Key の対応
【Unity】【C#】InputSystem の Keyboard クラスと (旧)Input.GetKey の対応
【Unity】【C#】InputSystem の Mouse クラスと(旧)Input.GetMouseButton の対応
【Unity】【C#】InputSystem.Key をリアルタイムで調べる / Windows 日本語キーボードでの Key 一覧
【Unity】【C#】InputSystem でマウスのホイール(scroll)取得と (旧)Input との対応
【Unity】【C#】InputSystem.TouchPhase の IsActive(), IsEndedOrCanceled() [拡張メソッド] の具体値
【Unity】【C#】InputSystem の displayName や control path から Key (キーコード) を取得(変換)する
【Unity】【C#】InputSystem で Android のバックキーの isPressed がなぜか一定時間で false になる?
【Unity】【C#】EventSystem を InputSystem 用に置き換えると、スクロールビュー等の移動が速過ぎる
- 関連記事
category: Unity
thread: ゲーム開発
janre: コンピュータ
tag: Unityプラグイン Unityライブラリ InputSystem FantomPlugin