[英]Drag a UI Image in Unity3d (C#)
我需要在UI
制作地图。 地图很大,所以用户需要缩放和拖动它。 对于缩放现在我使用这个:
public class ScaleMaps : MonoBehaviour
{
private float zoom;
public float zoomSpeed;
public Image map;
public float zoomMin;
public float zoomMax;
void Update()
{
zoom = (Input.GetAxis("Mouse ScrollWheel") * Time.deltaTime * zoomSpeed);
map.transform.localScale += new Vector3(map.transform.localScale.x * zoom, map.transform.localScale.y * zoom, 0);
Vector3 scale = map.transform.localScale;
scale = new Vector3(Mathf.Clamp(map.transform.localScale.x, zoomMin, zoomMax), Mathf.Clamp(map.transform.localScale.y, zoomMin, zoomMax), 0);
map.transform.localScale = scale;
}
}
如何用mouse
拖动图像?
您是否尝试过 IDragHandler 接口?
public class UIDraggable : MonoBehaviour, IDragHandler {
#region IDragHandler implementation
public void OnDrag (PointerEventData eventData)
{
this.transform.position += (Vector3)eventData.delta;
}
#endregion
}
您需要在脚本的顶部包含以下内容..
using UnityEngine.EventSystems;
根据 Ben 的回答,我对其进行了一些更改以更好地与 UI 元素配合使用:
[RequireComponent(typeof(RectTransform))]
public class Draggable : MonoBehaviour, IDragHandler
{
private RectTransform rectTransform;
private void Start()
{
rectTransform = GetComponent<RectTransform>();
}
public void OnDrag(PointerEventData eventData)
{
rectTransform.anchoredPosition += eventData.delta;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.