Пример #1
0
    public void UpdateChild(ViewAttr tViewAttr)
    {
        if (!mViewList.Contains(tViewAttr))
        {
            return;
        }
        int index = mViewList.IndexOf(tViewAttr);

        for (int i = 0; i < tViewAttr.mRendererLayerList.Count; i++)
        {
            Transform trans = tViewAttr.mRendererLayerList[i];
            Canvas    panel = trans.GetComponent <Canvas>();
            if (panel != null)
            {
                curDepth = panel.sortingOrder;
                break;
            }
            else
            {
                RendererAttr attr = trans.GetComponent <RendererAttr>();
                if (attr != null)
                {
                    if (attr.mRenderer.Length > 0)
                    {
                        curDepth = attr.mRenderer[0].sortingOrder;
                        break;
                    }
                }
            }
        }
        for (int i = index; i < mViewList.Count; i++)
        {
            AutoSetOrder(mViewList[i]);
        }
    }
Пример #2
0
    void AutoSetOrder(ViewAttr tViewAttr)
    {
        List <Transform> mRendererLayerList = tViewAttr.mRendererLayerList;

        for (int i = 0; i < mRendererLayerList.Count; i++)
        {
            Transform trans = mRendererLayerList[i];
            Canvas    panel = trans.GetComponent <Canvas>();
            if (panel != null)
            {
                panel.sortingOrder = curDepth;
                curDepth++;
            }
            else
            {
                RendererAttr attr = trans.GetComponent <RendererAttr>();
                if (attr != null)
                {
                    Renderer[] mRenderer = attr.mRenderer;
                    for (int j = 0; j < mRenderer.Length; j++)
                    {
                        mRenderer[j].sortingOrder = curDepth;
                        curDepth++;
                    }
                }
                if (panel == null && attr == null)
                {
                    Debug.LogError(string.Format("物体:{0}的ViewAttr组件的mRendererLayerList列表中只能添加带Canvas或者RenderAttr组件的Transform,",
                                                 "物体{1}没有添加这两个组件中任何一个", tViewAttr.gameObject.name, trans.gameObject.name));
                }
            }
        }
    }
Пример #3
0
 public void RemoveRenderer(RendererAttr tRendererAttr)
 {
     if (mRendererLayerList.Contains(tRendererAttr.transform))
     {
         mRendererLayerList.Remove(tRendererAttr.transform);
     }
     _ViewManager.UpdateView(this);
 }
Пример #4
0
    /// <summary>
    /// 获取GameObject
    /// 注意:
    /// 界面加载的对象:一种普通的ui对象,另外一种特效,普通ui对象的层次需要手动设置,特效的话,可能有render属性,
    ///     显示等级同Canvas,为了方便管理层次,规定:所有特效的根物体都要挂RendererAttr脚本,层次从低到高顺序添加特效包含的几个renders
    /// </summary>
    /// <param name="tPath"></param>
    /// <returns></returns>
    public GameObject GetGameObject(string tPath)
    {
        GameObject   mObj          = _AssetManager.GetGameObject(tPath);
        RendererAttr mRendererAttr = mObj.GetComponent <RendererAttr>();

        if (mRendererAttr != null)
        {
            mViewAttr.AddRenderer(mRendererAttr);
        }
        RecordLoadPath(tPath);
        return(mObj);
    }