首先创建UI,然后创建一个Label,修改Text为”This is My Name”(这里根据个人喜好设置)。然后创建一个3D的相机,我创建的了一个Sphere,然后又创建了一个空的GameObject,修改名字为ObjectName。参考下图:
FloatingText有两个注意点,这里是第一个,一定要保证UI Root(2D)的z轴在-2—2之间,因为NGUICamera与Clipping Planes(near:-2,far2)设置有关。之后我们要保证Label的z轴也要在这个范围以内才可以。
接下来就是创建FloatingText.cs了,下面是我写的类,不用原作者写的那么麻烦就可以了(呵呵。。。):
using UnityEngine;
using System.Collections;
public class FloatingText : MonoBehaviour {
public GameObject target;
public Camera worldCamera;
public Camera nguiCamera;
private Vector3 pubPos;//global postion
void LateUpdate()
{
pubPos = worldCamera.WorldToViewportPoint(target.transform.position);
pubPos = nguiCamera.ViewportToWorldPoint(pubPos);
pubPos.z = 0;
transform.position = pubPos;
}
}
语句的执行放在LateUpdate方法中执行了,因为LateUpdate是按固定帧频执行,所以比Update相对要精确一些。这里有第2个重点:就是pubPos.z要为0,这样就可以避免Label在移动的过程中z轴变化。