NGUI 坐标转换
1. 使用透视摄像机把世界坐标转换到屏幕坐标
Vector3 pos = Camera.main.WorldToScreenPoint(worldPos);
pos.z = 0f; //z一定要为0.
2. 使用UI摄像机转换到NGUI的世界坐标
Vector3 pos2 = UICamera.currentCamera.ScreenToWorldPoint(pos);
3. 赋值给NGUI控件
temp.transform.position = pos2; //temp为NGUI控件.
另外:
/// 3D坐标转换为NGUI坐标
Vector3 WordPositionToViewPosition(GameObject target,Vector3 offset){
gameCamera = NGUITools.FindCameraForLayer (target.gameObject.layer);
Vector3 pos = gameCamera.WorldToViewportPoint(target.transform.position + offset);
pos = uiCamera.ViewportToWorldPoint(pos);
pos = GuildeArrow.transform.parent.InverseTransformPoint(pos);
pos.z = 0f;
return pos;
}UGUI
将Canvas 的Render Mode 调整为如图所示
然后Render Camera 选择为主摄像机
然后 UGUI 控件和世界坐标中的物体就使用同一个相机渲染,也就是说两者处于同一个坐标系中,无需再进行坐标转换
UGUI
以上两种都是在UI界面中调整位置,z轴不会变化
要使用3d效果,可以将Canvas的Render Mode调整为 world Space(注意Maincamera 中culling mask 要添加UI层)
然后再调整Canvas 和text 等控件的大小,拖拽到相应的对象上方,
调整
即可构成3D效果
版权声明:本文为BaiYangShouTong原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。