繁体   English   中英

使用屏幕空间移动UI-相机(统一)

[英]Moving UI with Screen Space - Camera (Unity)

当在“屏幕空间-相机”上设置了“画布”时,我想移动图像UI

但是,似乎没有任何效果。 我尝试了以下操作:

    public void OnDrag(PointerEventData eventData)
{

        Vector3 screenPoint = Input.mousePosition;
        screenPoint.z = 0.13f; //distance of the plane from the camera
        icon.transform.position = Camera.main.ScreenToWorldPoint(screenPoint);
    }

使图像立即移出屏幕。

 public GameObject Target;
private EventTrigger _eventTrigger;
void Start ()
{
    _eventTrigger = GetComponent<EventTrigger>();
    _eventTrigger.AddEventTrigger(OnDrag, EventTriggerType.Drag);
}

void OnDrag(BaseEventData data)
{
    PointerEventData ped = (PointerEventData) data;
    Target.transform.Translate(ped.delta);
}

同样的故事,图像失灵并移出屏幕。

    public void OnDrag(PointerEventData eventData)
{
    Vector3 clickedPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
    InventoryParent.transform.position = clickedPosition;
}

如上所述。

任何人都对如何使用Screen-Space Camera进行准确的鼠标拖动UI有想法? 进行覆盖效果很好。

将您的UI元素RectTransform锚更改为:

在此处输入图片说明

并将此脚本添加到您的UI元素对象:

RectTransform rectT;

    void Start()
    {
        EventTrigger trigger = GetComponent<EventTrigger>();
        EventTrigger.Entry entry = new EventTrigger.Entry();
        entry.eventID = EventTriggerType.Drag;
        entry.callback.AddListener((data) => { OnDragDelegate((PointerEventData)data); });
        trigger.triggers.Add(entry);
        rectT = GetComponent<RectTransform>();
    }

    public void OnDragDelegate(PointerEventData data)
    {
        rectT.anchoredPosition = data.position;

    }

您还需要UI元素对象上的EventTrigger组件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM