世界坐标
将游戏内的游戏空间理解为"世界",世界坐标系对等于游戏空间坐标系,游戏中的transform.position或者transform.rotation的信息都是基于世界坐标系。
视口坐标
视图坐标是对游戏显示视图的一个归一化的描述,其中左下角为(0,0),右上角为(0,1),在需要对显示视图进行分屏处理时,可以通过设置Camera上的ViewPort Rect属性来进行屏幕分屏渲染。
屏幕坐标
屏幕坐标是对屏幕像素(分辨率)的位置的描述,其中左下角为(0,0),右上角为(Screen.width,Screen.height)。
Unity坐标转换API
//1.屏幕转世界坐标
Camera.main.ScreenToWorldPoint();
!需要注意的是屏幕转世界坐标的时候要注意坐标的z值,z值为目标与相机的z轴差值
//2.世界转屏幕坐标
Camera.main.WorldToScreenPoint();
//3.世界转视口坐标
Camera.main.WorldToViewportPoint();
//4.视口转世界坐标
Camera.main.ViewportToWorldPoint();
//5.视口转屏幕坐标
Camera.main.ViewportToScreenPoint();
//6.屏幕转视口坐标
Camera.main.ScreenToViewportPoint();
UGUI内部坐标转换示例
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TransformChange : MonoBehaviour
{
public GameObject root2;
public GameObject go2;
void Start()
{
//方法1:
//转世界坐标
Vector3 origin = transform.TransformPoint(Vector3.zero);
//转局部坐标
Vector3 des = root2.transform.InverseTransformPoint(origin);
//局部坐标赋值
go2.transform.localPosition = des;
//方法2:
//世界坐标直接赋值
transform.position = go2.transform.position;
}
}
UI框架免费课程:
打造基于MVC的UI框架Unity MVC UI框架https://bycwedu.vipwan.cn/promotion_channels/1789077446