繁体   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