我正在编写一个脚本,使用 a将PointerEventData
指针事件(例如,等)事件传递pointerDownHandler
给光线投射对象,使用例如pointerUpHandler
dragHandler
ExecuteEvents.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 …