求助大佬们,在我的2D Unity手游项目里,我已经把MultiTouchEnabled设为false了,并且有用SafeArea来做异形屏的适配。
当在SafeArea范围内的时候,手机点击下去且不松开,然后把该手指移出safearea 范围后,可以用另一个手指来点击,并且会记录并反映点击事件。(应该来说怎么样都不应该记录第二个手指点击)
游戏是一款合成游戏,棋盘上的棋子是用Input的touch的,而UI用的UGUI用的是EventSystem的点击事件来触发的。只要手指拖动一个棋子到safe area之外,就可以继续用另一根手机拖动其他棋子或者点击UI。
在SafeArea的范围之内一切正常。
并且目前只在刘海屏和灵动道的iOS设备上有发现该问题,在安卓设备上(不管是不是异形屏)都没有该问题。
请问各位大佬有什么想法吗?
来自AI:
根据你的描述,问题似乎是由于异形屏的适配和触摸事件处理引起的。在 SafeArea 范围内,你已经成功地禁用了多点触摸,并且只有一个手指可以触发事件。然而,在 SafeArea 范围外,另一个手指仍然可以触发事件。
这个问题可能是由于 Unity 的输入系统和触摸事件处理的机制导致的。在某些情况下,即使设置了 MultiTouchEnabled
为 false,仍然可能允许多个手指触发事件。
在处理异形屏适配和触摸事件之前,我建议你尝试以下步骤来解决这个问题:
RectTransformUtility
的 RectangleContainsScreenPoint
方法来判断触摸点是否在 SafeArea 范围内。Input.GetMouseButtonDown
或 Input.GetMouseButton
来处理触摸事件,而不是使用 Input.touchCount
来判断触摸点的数量。