[UnityUI]UGUI中的遮挡(一)

  • Post author:
  • Post category:其他

原文链接: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值较小: