[英]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.