Unity开发——设置UI跟随鼠标移动

这里记录两种方式设置物体随鼠标移动方式,主要是记录之间的区别

一、两种实现方式

1、直接将鼠标位置赋值给UI对象

public void Update()
{
    gameObject.transform.position = Input.mousePosition;
}

2、将鼠标位置转换到二维Canvas下的坐标,然后设置UI的localPostion;

using System.Collections.Generic;
using UnityEngine;

public class Test : MonoBehaviour
{
    private RectTransform canvasRect;

    private void Start()
    {
        canvasRect = GameObject.Find("Canvas").GetComponent<Canvas>().transform as RectTransform;
    }

    public void Update()
    {
        Vector2 position;
        RectTransformUtility.ScreenPointToLocalPointInRectangle(canvasRect, Input.mousePosition, null, out position);
        transform.localPosition = position;
    }
}

二、实现方式的相同点

运行查看UI的RecTransform变化值,两种效果是一样的

三、实现方式的区别

1、第一种方式是直接将对象的位置设置为鼠标的屏幕坐标,这种方式可能会导致对象的位置超出屏幕或画布边界,尤其是在使用Canvas进行UI布局时。

2、第二种方式是先将鼠标屏幕坐标转换为相对于CancasRect的局部坐标,然后将 对象的位置设置为这个局部坐标。这种方式有利于边界检查和适应不同分辨率情况。

通过将屏幕坐标转为局部坐标,可以更容易地进行边界检查和调整,确保对象不会超出Canvas边界;

这种是基于Canvas的设置对象位置,不同分辨率的屏幕下可以更好地适应调整。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值