有时候游戏内一些Tips界面需要根据点击的位置来动态显示Tips界面的位置。
这个案例就很好用了。
using UnityEngine;
using UnityEngine.UI;
/// <summary>
/// 测试根据鼠标点击的位置来转换成UI坐标
/// </summary>
public class PosTransPanel : MonoBehaviour
{
private Image _image = null;
private Camera _camera = null;
private Transform _canvasTrans = null;
void Start()
{
_image = transform.parent.Find("Image").GetComponent<Image>();
_camera = Camera.main;
_canvasTrans = transform.parent;
}
private void LateUpdate()
{
//鼠标左键点击
if (Input.GetKeyDown(KeyCode.Mouse0))
{
//获取鼠标点击的坐标
Vector3 screenPos = _camera.WorldToScreenPoint(Input.mousePosition);
//把屏幕坐标转换成UI坐标
_image.transform.localPosition = ScreenToUIPos(screenPos);
}
}
/// <summary>
/// 屏幕坐标转换成UI坐标
/// </summary>
/// <param name="spos">屏幕坐标</param>
/// <returns>UI坐标</returns>
public Vector2 ScreenToUIPos(Vector3 screenPos)
{
Vector2 localPos;
// 画布Canvas 屏幕坐标 相机 转换后的UI坐标
RectTransformUtility.ScreenPointToLocalPointInRectangle(_canvasTrans as RectTransform, screenPos, _camera, out localPos);
return localPos;
}
}
文章来源:https://uudwc.com/A/DyjXd
文章来源地址https://uudwc.com/A/DyjXd