游戏开发中有时要实现这样的效果,在屏幕点击地方生成UI
此时需要用到这个函数
public static bool ScreenPointToLocalPointInRectangle(RectTransform rect, Vector2 screenPoint, Camera cam, out Vector2 localPoint);
参数说明:
rect: 对应的 RectTransform 的引用
screenPoint: 位置,基于屏幕坐标系
cam: 相机的引用,如果Canvas的Render Mode 为 Screen Space - Camera 模式,则需要填入 Render Camera 对应的引用
localPoint: 转换成功后的坐标位置(原点(0,0)位置受Anchor的影响)
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using UnityEngine.EventSystems;
public class GlobalTest : MonoBehaviour
{
public Canvas canvas;
GameObject panel; //要改变位置的UI
RectTransform canvasRect;
void Start()
{
canvasRect = canvas.GetComponent<RectTransform>();
}
void Update()
{
if (Input.GetMouseButtonUp(0))
{
Vector2 outVec;
if (RectTransformUtility.ScreenPointToLocalPointInRectangle(canvasRect,Input.mousePosition,null,out outVec))
{
Debug.Log("转换后的屏幕坐标: " + outVec);
panel.GetComponent<RectTransform>().anchoredPosition = outVec;
}
}
}
}