原文链接:http://www.unitymanual.com/thread-38801-1-1.html?_dsign=cafe9968
我们知道,在UGUI中,UI的前后关系可以根据在Hierarchy的位置来调整的,知道这个就可以调整Hud的遮挡关系了。
Hud脚本:
using UnityEngine;
using System.Collections;
public class Hud : MonoBehaviour {
public Transform targetTransform;
// Update is called once per frame
void Update ()
{
transform.position = Camera.main.WorldToScreenPoint(targetTransform.position);
}
}
对Hud进行排序的SortHud脚本:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class SortHud : MonoBehaviour {
// Update is called once per frame
void Update ()
{
List<Transform> list = new List<Transform>();
foreach (Transform t in transform)
{
list.Add(t);
}
//对list进行排序,传入一个委托,用委托的方法进行排序
//在这里根据z轴进行排序
list.Sort((a, b) =>
{
//防止结果存在多个0~1之间的数,故乘以一个大数
return (int)((b.position.z - a.position.z) * 1000);
});
for (int i = 0; i < list.Count; i++)
{
//设置在Hierarchy视图中,物品在父物体下的顺序
list[i].SetSiblingIndex(i);
}
}
}
运行时,物体B的z值较小:
运行后,令物体A的z值较小: