Unity3d ScrollRect干扰dragobject
我在我的游戏对象上实现了一个拖动脚本,这样用户可以通过触摸屏幕来旋转它们,我还有一个水平滚动条,其中包含用户可以选择显示相应对象的按钮,发生的是当用户滑动手指旋转对象时,滚动条一起滚动,旋转对象时如何防止scrollrect滚动 排水口:Unity3d ScrollRect干扰dragobject,unity3d,unity5,Unity3d,Unity5,我在我的游戏对象上实现了一个拖动脚本,这样用户可以通过触摸屏幕来旋转它们,我还有一个水平滚动条,其中包含用户可以选择显示相应对象的按钮,发生的是当用户滑动手指旋转对象时,滚动条一起滚动,旋转对象时如何防止scrollrect滚动 排水口: using UnityEngine; using System.Collections; public class DragObject : MonoBehaviour { private float m_RotationSpeed = 40f;
using UnityEngine;
using System.Collections;
public class DragObject : MonoBehaviour {
private float m_RotationSpeed = 40f;
void Start () {
}
void Update() {
if (1 == Input.touchCount) {
gameObject.transform.Rotate (Vector3.down, Input.touches [0].deltaPosition.x * m_RotationSpeed * Time.deltaTime);
}
}
}
ScrollRect:
您应该使用UnityEngine.EventSystems中的接口,而不是使用更新方法 这样就可以使用事件,并且滚动条不会移动 如果您以前没有使用过,请执行以下步骤:
图像
或文本
,在这种情况下,像往常一样继承自monobhavior
),并使用您感兴趣的界面,在您的情况下,我认为它们是,以及using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class EventsExample : Graphic, IBeginDragHandler, IDragHandler, IEndDragHandler {
public GameObject movingObject; // I AM ROTATIN IF YOU DRAG!!
private float m_RotationSpeed = 1f;
public void OnBeginDrag(PointerEventData eventData)
{
Debug.Log("START DRAGGING, I ONLY GET CALLED ONCE PER FINGER");
}
public void OnDrag(PointerEventData eventData)
{
Debug.Log("I AM DRAGGING AND I AM GETTING CALLED EACH FRAME PER FINGER");
movingObject.transform.Rotate(Vector3.down, eventData.delta.x * m_RotationSpeed * Time.deltaTime);
}
public void OnEndDrag(PointerEventData eventData)
{
Debug.Log("I END DRAGGING AND I AM GETTING CALLED ONCE PER FINGER");
}
}
scrollrect
下方。在Unity UI中,画布的最后一个子对象是位于其上方的对象,因此,通过这种方式,ScrollRect
将位于空游戏对象上方,并在拖动时捕捉拖动事件感谢您的解释,它现在工作正常,但是控制台显示一个错误:NotImplementedException:请求的功能未实现。EventDrag.onendrag(UnityEngine.EventSystems.PointerEventData eventData)(位于Assets/EventDrag.cs:31)我应该忽略它吗?这是因为您删除了onendrag函数而没有删除IEndDragHandler