Unity的UGUI调节深度而不影响位置

来源:互联网 发布:淘宝开店审核通过后怎么办 编辑:程序博客网 时间:2024/05/04 14:32

Hello,我是 KitStar。  

最近在使用UNITY的UGUI的时候碰见一个尴尬的问题。

就是想切换一组图片的前后关系,也就是深度。本来使用着RectTransform.SetSilblingIndex。倒是可以调节他的前后顺序,可是也同时调节了他的位置。这不是想要的结果。

public void SetSiblingIndex(intindex);这是RectTransform.SetSilblingIndex的使用。

最后通过查找。发现可以通过Canvas来调节他们之间的深度。代码如下::


using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class UGUIOrder : MonoBehaviour {

    public int order;
    public bool isUI = true;
 
    public void SetOrder( int order)
    {
        if (isUI)
        {
            Canvas canvas = GetComponent<Canvas>();
            if (canvas == null)
            {
                canvas = gameObject.AddComponent<Canvas>();
            }
            canvas.overrideSorting = true;   // 重载排序
            canvas.sortingOrder = order;     //整理顺序
           
        }
        else
        {
            Renderer[] renders = GetComponentsInChildren<Renderer>();

            foreach (Renderer render in renders)
            {
                render.sortingOrder = order;
            }
        }
    }
   
}





1 0