【问题标题】:Unity mobile joystick OnPointerUp causes errorUnity 移动摇杆 OnPointerUp 导致错误
【发布时间】:2016-10-31 03:16:48
【问题描述】:

我正在尝试弄清楚如何检测用户是否将手指放在 UI 操纵杆上,即使他没有移动它(水平轴和垂直轴都返回零)。我从我可以使用的标准资产操纵杆脚本中找到了这些 OnPointerDownOnPointerUp 方法。通过这段脚本,我可以检测到何时按下操纵杆以及何时结束:

public void OnPointerUp(PointerEventData data)
{
    transform.position = m_StartPos;
    UpdateVirtualAxes(m_StartPos);

    // line below causes the error
    if (data.pointerEnter.name == "MobileJoystick_right") {
        rightJoystickPressed = false;
    }
}

public void OnPointerDown(PointerEventData data) {
    if (data.pointerEnter.name == "MobileJoystick_right") {
        rightJoystickPressed = true;
    }
}

正如我所说,一切正常,但是如果我将操纵杆拖离原点很远并释放它,我会收到以下错误:

NullReferenceException: Object reference not set to an instance of an object
UnityStandardAssets.CrossPlatformInput.Joystick.OnPointerUp (UnityEngine.EventSystems.PointerEventData data) (at Assets/Standard Assets/CrossPlatformInput/Scripts/Joystick.cs:105)
UnityEngine.EventSystems.ExecuteEvents.Execute (IPointerUpHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/ExecuteEvents.cs:45)
UnityEngine.EventSystems.ExecuteEvents.Execute[IPointerUpHandler] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.EventFunction`1 functor) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/ExecuteEvents.cs:269)
UnityEngine.EventSystems.EventSystem:Update()

只有当我将操纵杆拖离原点比它可以移动的距离更远时才会发生这种情况(我已将移动范围设置为 100)然后释放它。不知道为什么会这样。只是要明确一点:如果我从原点拖动操纵杆,比如说 80(一些单位)并释放操纵杆,一切都很好。但是,如果我拖动操纵杆,假设距离原点 150 个单位并释放它,我会收到上述错误。

【问题讨论】:

    标签: c# android mobile unity3d


    【解决方案1】:

    通过更改数据解决了这个问题。pointerEnter.name == "MobileJoystick_right" 为数据。rawPointerPress.name == "MobileJoystick_right"。

    【讨论】:

      猜你喜欢
      • 2016-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多