2015年04月13日

UnityのuGUIで、Buttonの反応を敏感にする


相変わらずタイピングのゲームを作っているのですが、
先日、実際に友人のExperiaにインストールしてプレイしてみたところ、
どうも自作キーボードの反応が悪い気がしたんですよ。

タイピングの速さを競うゲームなのに、
早くタイピングすればするほど、反応が追いつかない感じがしまして。

速さを競うゲームでこれはいかんと思い、
検証して改善することにいたしました。

まずなぜ反応が悪いか…ですが、
Unityで設置できるuGUIのButton、
こちらで特に何もしなくても、
コンポーネントに『Button Script』が追加されてまして、
『On Click()』という名前で、ボタンを押した時の反応が設定出来ます。

この『On Click()』がちょいと曲者でして、
通常、感覚的には『ボタンを押すと反応する』というのは、
まさにそのまま『ボタンを押す→反応』という流れになります。

ところがこの『On Click()』、
動きを検証してみると、『ボタンを押す→ボタンから指を離す→反応』
という、『指を離す』という余計なアクションがひとつ必要なのです。
その結果反応が鈍り、のろっとした感じになりました。

確かにスマホアプリだとそういう反応をするボタンが多いですし、
誤作動の防止なんかには有益だとは思うのですが、
今回はスピード重視で、操作的には押し間違いも許容するシステム。
なんとかこの『指を離す』という余計なアクションを排除して、
『ボタンを押す→反応』というシンプルな挙動に出来ないかとがんばってみました。

オブジェクトに追加出来るコンポーネントに、
『Event Trigger』てのがあります。今回はそれを使います。
まず、オブジェクトのInspectorに『Event>Event Trigger』のコンポーネントを追加します。

追加したら、『Add New Event Type』てボタンがEvent Trrigerの部分にありますから、
そこをポチッと押してもらって、『Pointer Down』を選択して下さい。

Pointer Downが追加されたら、あとは『On Click』と同じ要領で、
ボタンが押された時の挙動メソッドが書かれたスクリプトのオブジェクト、
そして実際のメソッドを選択します。これでOK。

実際に動かしてみたら、
ボタンに触れただけで反応してます。これでよしよし。

ついでに型の古い端末のX-06HT…通称でざいあたんでも確認してみました。
古い端末なんで挙動自体はかなり遅いですが、
キチンとボタンに触れると反応してくれます。描画が遅いだけで、
反応自体はしっかり敏感。リアルタイムな記録になっています。

これでなんとか、速さの追求も出来そうな感じです。

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)