Unity教程之-UGUI元素显示在角色的头顶上

 

在游戏中我们会遇到比如人物角色头顶上要显示角色名字,那么如何在unity new ui即UGUI中实现这种效果呢,下面我们来学习下,我们游戏完全使用UGUI来工作,所以游戏中的很多元素都是UGUI的 Game Canvas画布设置为;World Space , 主要也是为了以后一下牛叉的效果

还有一个UI Canvas画布设置为;Screen Space – Overlay 就是这些元素会在最前方,在屏幕上的。

还有一组是:Spines Layer, 主要是放着spine制作的角色

2种解决方案:

第一种是 为角色创建子对象了类型是Canvas画布,Unity的官方事例是这么做的,可以自己去看看。这样在Hierarchy上是有上下级的层级关系的。

这种的话,Canvas的类型最简单是设置为:Screen Space – Overlay

第二种呢,其实也很简单,就是我得到角色的位置position, 然后转换为屏幕坐标系,然后在转换为UGUI所在画布和相机的坐标系即可,得到了这个就赋值给UI即可了。但是这样在Hierarchy上是没有上下级的层级关系的。一个属于Game Canvas画布,一个在Spines Layer中,但是角色会有UI的引用。

  1. Vector3 first = ExploreBattleManager.Instance.MainCamera.GetComponent<Camera>().WorldToScreenPoint(transform.position); //把角色在主摄像机的世界坐标转化为屏幕坐标[注:first的结果的z值是原来世界坐标的z]
  2. first = new Vector3(first.x, first.y, 100); // 设置这个z的意思是想让角色的位置映射到UICamera的多远距离的平面上。 这里我们希望映射到Game Canvas画布相对于相机的距离,怎么看?如果是Screen Space – Camera的话就是如下图的Plane Distance值了。  如果是World Space :值就是两个z值的差了:
  3. skillList.transform.position = ExploreBattleManager.Instance.UICamera.GetComponent<Camera>().ScreenToWorldPoint(first);

UGUI元素显示在角色的头顶上

UGUI元素显示在角色的头顶上

UGUI元素显示在角色的头顶上

好了,本篇unity3d教程到此结束,下篇我们再会!