目前,我正在开发一款手机游戏,用户将在环境中单击并拖动某些内容,如果将其拖动到中心,则会打开一个风扇菜单,然后他们可以在其中选择一个选项。我遇到的问题是,当菜单打开时,用户的手指仍然会被按下,如果他们将手指拖动到菜单项上然后释放,则不会注册 OnPointerUp 事件。强制用户放开屏幕并按下菜单项会破坏我的游戏这部分的用户体验,因为它应该是从拖动元素的平滑过渡。如果我最初按下一个 UI 元素,然后将手指移动到另一个元素然后放开,该事件确实会注册,但它无法从源自按钮外部的 OnPointerDown 运行。
1 回答
翻阅古今
TA贡献1780条经验 获得超5个赞
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"); }
}
- 1 回答
- 0 关注
- 92 浏览
添加回答
举报
0/150
提交
取消