Val*_*lis 5 c# mouse button drag unity-game-engine
我用来OnMouseDrag()更改屏幕上对象的相机视图。代码如下:
void OnMouseDrag() {
if (isGameOver) {
return;
}
float rotSpeed = GameConst.rotateSpeed * 20.0f ;
float rotX = Input.GetAxis("Mouse X") * rotSpeed * Mathf.Deg2Rad;
float rotY = Input.GetAxis("Mouse Y") * rotSpeed * Mathf.Deg2Rad;
transform.RotateAround(Vector3.up, -rotX); transform.RotateAround(Vector3.right - Vector3.forward, -rotY);
}
Run Code Online (Sandbox Code Playgroud)
然后我用来button.OnClick().AddListerner()在单击按钮时附加一个函数。
问题是,每次当我完成拖动时,如果鼠标向上的位置在按钮区域中,按钮也会调用该OnClick()函数。OnClick()当只是拖动操作时如何禁用?
使用 IDragHandler 执行拖动并设置已拖动的标志。 https://docs.unity3d.com/ScriptReference/EventSystems.IDragHandler.html
然后,如果该标志未打开,则使用 IPointerUpHandler 调用该操作。另外,无论发生什么,重置标志:
public class DragMe : MonoBehaviour, IBeginDragHandler, IPointerUpHandler
{
private bool isDragging = false;
public void OnBeginDrag(PointerEventData data)
{
this.isDragging = true;
}
public void OnPointerUp(PointerEventData eventData)
{
if(this.isDragging == false){ Invoke();}
this.isDragging = false;
}
}
Run Code Online (Sandbox Code Playgroud)