【发布时间】:2019-07-20 20:54:10
【问题描述】:
我目前处于精神崩溃的边缘。我花了几个小时构建自己的激光笔,让它在所有东西上发射光线投射,并尝试让它与我的 UI 一起工作。但它不会。至少不正确。
工作原理:Raycast 和画线。
我挣扎的地方:现在我有两个选择。 A) 没有网格渲染器的标准 UI 按钮和立方体。这使按钮根据其按钮脚本通过其动画淡化。但它不会解决 On 按钮单击事件!所以我在按钮上添加了一个事件触发器——它确实会触发“指针输入”事件!但不是它的“指针点击”事件:(
所以我的想法是:我的点击一定是执行错误!要对此进行测试: B) 为立方体添加了一个事件触发器,即按钮碰撞器。将其设置为“指针单击”。还有多田!有用! BUUUUT 这会杀死按钮的动画!为什么?
感谢您的任何想法!如果您有好的提示,我也会考虑新的起点!
下一期是滑块。有关如何使它们工作的任何提示?
感谢您的帮助!!
干杯 弗洛尔
编辑:当前代码:
{//Record this data and tell the object that we are pointing at them (OnPointerEnter)
eventData.pointerEnter = rayHit.transform.gameObject;
ExecuteEvents.ExecuteHierarchy(eventData.pointerEnter, eventData, ExecuteEvents.pointerEnterHandler);
//If trigger becomes state down ...
if (SteamVR_Actions._default.GrabPinch.GetStateDown(handType) && eventData.pointerEnter != null)
{
//...tell the object that we have pressed it (OnPointerDown)
eventData.pointerPressRaycast = eventData.pointerCurrentRaycast;
eventData.pointerPress = ExecuteEvents.ExecuteHierarchy(eventData.pointerEnter, eventData, ExecuteEvents.pointerDownHandler);
}
//Otherwise, if we just released the primary input axis...
else if (SteamVR_Actions._default.GrabPinch.GetStateUp(handType))
{
//...tell the object than we have stopped pressing it (OnPointerUp)
if (eventData.pointerPress != null)
ExecuteEvents.ExecuteHierarchy(eventData.pointerPress, eventData, ExecuteEvents.pointerUpHandler);
//...finally, if we pressed and released the same object, then we have clicked it (OnPointerClick)
if (eventData.pointerPress == eventData.pointerEnter)
ExecuteEvents.ExecuteHierarchy(eventData.pointerEnter, eventData, ExecuteEvents.pointerClickHandler);
eventData.pointerPress = null;
}
}
【问题讨论】:
-
感谢您添加代码,仍然很难弄清楚发生了什么。代码的哪一部分没有做你想做的事?
-
@ILiveForVR 我评论了你的回答 - 这是否澄清了问题/我的困惑?
标签: c# user-interface unity3d virtual-reality