iOSデバイス上でGUI.Buttonが正常に動作しない現象が発生した。
「シングルタップでは反応していたボタンが、画面をタップしたままタップすると反応しない。」
現象を確認するために、画面の中央にGUI.Buttonを配置した単純なアプリを用意した。
スクリプトはGUI.Buttonを表示するシンプルなもの。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
using UnityEngine; using System.Collections; [ExecuteInEditMode] public class testGUI : MonoBehaviour { void OnGUI() { float xx = Screen.width * 0.5f - 100; float yy = Screen.height * 0.5f - 100; float ww = 200; float hh = 200; GUI.Button(new Rect(xx, yy, ww, hh), "TAP ME!"); } } |
シングルタップ時の挙動
a. ボタンをタップするとボタンが反応する。
マルチタップ時の挙動
b. 画面左下をタップしたまま、別の指でボタンをタップするとボタンが反応しない。
c. 画面左下をタップしたまま、別の指で画面右上をタップするとボタンが反応する。
d. 4本の指で画面四隅をタップすると、ボタンが反応する。
マルチタップした時には、タップした座標が平均されて、GUIへ渡されているような挙動でした。
結論
iOS向けのアプリで、マルチタップが想定されるような操作が含まれているならGUI.Buttonは使わないほうが良さそうです。
公式ドキュメント:
http://docs-jp.unity3d.com/Documentation/Manual/Input.html#iPhoneInput
Input.touchesの配列から、タップされた座標やTouchPhaseを取得して、GUITextureのHitTestとなるのかな?
トータルコスト的には、AssetStoreでマルチタップに対応したAssetを購入するのが良いんだろうと思います。
コメントを残す
コメントを投稿するにはログインしてください。