C# 我有10个Panel, 得到一个数值(1-10),再赋值给对应的Panel. 求大神指点 5

 我来答
藤原子大雄
2018-06-03 · TA获得超过7195个赞
知道大有可为答主
回答量:6977
采纳率:82%
帮助的人:1725万
展开全部
天抽空研究了一下UGUI的深度,UGUI真是好的不得了。以前用NGUI的时候UI的深度就是一个指定的数值,数值越大越靠前,尤其在布复杂界面的时候,深度值不知道怎么填非常恶心。现在有了UGUI这问题即可迎刃而解呀~~如下图所示,B图片在A图片前面,在看看Hieraychy视图,因为A在B的上面,所以优先渲染A,然后是B。那么B就在A的上面了。。

UGUI研究院之UI的深度学习(二) - 雨松MOMO程序研究院 - 1
那么我现在想让A图在B图的上面,那么直接在Hierarchy视图里把B拖拽放在A上面即可。

UGUI研究院之UI的深度学习(二) - 雨松MOMO程序研究院 - 2
如果GameObject下面有多个精灵,那么原理是一样的, 优先看父节点在Hierarchys视图中的排序,决定父节点的渲染先后。然后在依次看子节点中的Hierarchy视图的排序。如果还有孙节点一次类推。。这样的话如果没有ABA叠层的情况那么图集永远是一个drawcall.所以在布界面的时候就要花点心思这样drawcall就能节省很多了呢。
如下图所示,在深入一下渲染绘制的顺序
UIMain 和 UINext 是同级目录,因为UINext 在UIMain下面 所以优先渲染UIMain这样UINext将在屏幕最前面。UISub原理一样,由此可得出。
精灵显示从前面的 到后面的排序 NextB > NextA >SubB>SubA>MainA>MainB 。。

UGUI研究院之UI的深度学习(二) - 雨松MOMO程序研究院 - 3
布界面的时候我们可以按照这个排序来让我们的drawCall 最小化。可是如果我想运行的时候在两个图之间插一个图该怎么办?脚本如下所示。
123456789101112131415161718192021 using UnityEngine;using System.Collections; public class UIMain : MonoBehaviour { void Start () { GameObject button = GameObject.Instantiate(Resources.Load<GameObject>("button"))as GameObject; button.transform.parent = transform; button.transform.localPosition = Vector3.zero; button.transform.localScale = Vector3.one; GameObject AObj = transform.Find("A").gameObject; GameObject BObj = transform.Find("B").gameObject; button.transform.SetSiblingIndex(AObj.transform.GetSiblingIndex()); } }
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式