小编Dar*_*ane的帖子

为什么我的pointerEventData.position总是Vector2.zero?

我正在编写一个脚本,使用 a将PointerEventData指针事件(例如,等)事件传递pointerDownHandler给光线投射对象,使用例如pointerUpHandlerdragHandlerExecuteEvents.Execute

ExecuteEvents.Execute(sometargetGameObject, _pointerEventData, ExecuteEvents.pointerDownHandler);
Run Code Online (Sandbox Code Playgroud)

基本上对于eg来说一切都很好Button,但目前我陷入了ScrollRect奇怪的行为中。我需要传递PointerEventData.position我尝试过的内容

其中Update我有以下几行

pointerPosition3D = _laser.transform.position + _laser.transform.forward * dist / 2f;
pointerPosition2D = _camera.WorldToScreenPoint(pointerPosition3D);
_pointerEventData.position = pointerPosition2D;
_lastPointerPosition = _pointerEventData.position;
Run Code Online (Sandbox Code Playgroud)

_pointerEventData.position永远存在(0.0, 0.0)

逐行调试时我可以清楚地看到例如

3D 指针位置 = (-0.177, 0.304, 0.9999)
2D 指针位置 =(74.28255, 153.9007)

然而已经在下一行

_lastPointerPosition = _pointerEventData.position;
Run Code Online (Sandbox Code Playgroud)

_pointerEventData.position =(0.0, 0.0)

在此输入图像描述

这怎么可能?我究竟做错了什么?


进一步的背景:

我看到了SteamVR 激光笔菜单的想法,并LaserPointer根据他们的想法使用steamvr_laserpointer.cs和创建了一个类VRUIItem。这是迄今为止我拥有的完整类,正如对于Button通常的 3D …

c# unity-game-engine

5
推荐指数
1
解决办法
958
查看次数

标签 统计

c# ×1

unity-game-engine ×1