如何让 onPointerUp 事件注册,无论 OnPointerDown 是否已注册

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

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

如果我最初按下一个 UI 元素,然后将手指移动到另一个元素然后放开,该事件确实会注册,但它无法从源自按钮外部的 OnPointerDown 运行。


繁星coding
浏览 93回答 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"); }}
打开App,查看更多内容
随时随地看视频慕课网APP