UGUI NGUI 玩家头顶 名字信息显示 对比

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版权协议,转载请附上原文出处链接和本声明。