簡體   English   中英

在 Unity3d (C#) 中拖動 UI 圖像

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM