我正在编写一个脚本,使用 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 …