using UnityEngine;
using UnityEngine.EventSystems;
/// <summary>
/// Canvas为Screen Space - Overlay模式下
/// </summary>
public class FollowMouse : MonoBehaviour
{
private Vector2 offset;
private RectTransform selectedRectTransform;
private void Update()
{
if (Input.GetMouseButtonDown(0))
{
// 获取当前鼠标下的UI元素
var pointer = new PointerEventData(EventSystem.current);
pointer.position = Input.mousePosition;
var results = new System.Collections.Generic.List<RaycastResult>();
EventSystem.current.RaycastAll(pointer, results);
if (results.Count > 0)
{
// 记录当前鼠标下的UI元素
selectedRectTransform = results[0].gameObject.GetComponent<RectTransform>();
// 计算当前鼠标下的UI元素与鼠标位置的偏移量
offset = (Vector3)selectedRectTransform.position - Input.mousePosition;
}
}
else if (Input.GetMouseButton(0) && selectedRectTransform != null)
{
// 计算当前鼠标下的UI元素的位置
selectedRectTransform.position = (Vector3)Input.mousePosition + (Vector3)offset;
}
else if (Input.GetMouseButtonUp(0))
{
// 清空当前鼠标下的UI元素
selectedRectTransform = null;
}
}
}
Unity-在Screen Space - Overaly的UI元素跟随鼠标的解决方案
猜你喜欢
转载自blog.csdn.net/qq_37335907/article/details/128956428
今日推荐
周排行