2

目前,我正在开发一款手机游戏,用户将在环境中单击并拖动某些东西,如果他们将其拖动到中心,它将打开一个粉丝菜单,然后他们可以在其中选择一个选项。我遇到的问题是,当菜单打开时,用户的手指仍然会被按下,如果他们将手指拖到菜单项上然后松开,则不会注册 OnPointerUp 事件。

强迫用户放开屏幕并按下菜单项会破坏我游戏这部分的用户体验,因为它应该是从拖动元素的平滑过渡。

如果我最初按下我的一个 UI 元素,然后将我的手指移到另一个手指然后放开,则该事件会注册,但它不适用于源自我的按钮外部的 OnPointerDown。

4

1 回答 1

1

您可以通过更改事件数据的变量来更改接收OnPointerDown事件的对象。pointerPress

以下脚本将触发OnPointerUp您释放指针的任何对象:

public class TestUI : MonoBehaviour, IPointerDownHandler, IPointerUpHandler, IPointerEnterHandler
{
    public void OnPointerDown(PointerEventData eventData) { Debug.Log(this.gameObject + " Down"); }
    public void OnPointerEnter(PointerEventData eventData) { eventData.pointerPress = gameObject; }
    public void OnPointerUp(PointerEventData eventData) { Debug.Log(this.gameObject + " Up"); }
}
于 2019-07-29T03:10:25.980 回答