UGUI代码动态UI的大小、尺寸等信息
来源:互联网 发布:心跳文学部 知乎 编辑:程序博客网 时间:2024/06/06 21:43
Unity是高度可视化编辑工具,但是难免有很多时候我们做UI需要动态创建UI元素,或者修改元素坐标、尺寸、锚点、轴心点等需求
前段时间正好遇到了这种需求,需要在UI界面上摆放一排带有动画的星星,但是星星的个数和位置是从配置表中读取的,不是固定的,这里我的解决方案是:
1、星星制作预设体
因为星星带有动画等属性,所以肯定是作为预设体放入Resources中动态实例化。
2、添加一个Image作为这些星星的父节点,主要是用来固定星星群的位置,用来做适配的
Image img = imgObj.AddComponent<Image>(); //设置透明度为0 img.color = new Color(0,0,0,1); //查找父节点 Transform obj = this.transform.Find("BottomUI"); if(null != obj){ //设置父节点(父节点一定要在设置坐标、锚点、轴心点之前,否则会被转化掉) img.transform.parent = obj.transform; //设置轴心点 img.rectTransform.pivot = new Vector2(0.5f,0); //设置本地缩放 img.rectTransform.localScale = new Vector3(1,1,1); //设置锚点 img.rectTransform.anchorMin = new Vector2(0.5f,0); img.rectTransform.anchorMax = new Vector2(0.5f,0); //设置坐标(相对于锚点的坐标,注意rectTransform与Transform中的区别,localPosition是另一坐标系下的概念,这边不能混用) img.rectTransform.anchoredPosition3D = new Vector3(0,483,0); //星星个数+(星星个数-1)*间距 float w = maxStarNum*116 + 40*(maxStarNum-1); //设置宽度和高度(下面两个方法都可以,都收锚点和轴心点的影响) //img.rectTransform.sizeDelta = new Vector2(w,100); var rt = img.GetComponent<RectTransform>(); rt.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, w); rt.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, 100);
3. 添加星星预设体
//添加星星预设体for(int i = 1; i < maxStarNum+1; i++){GameObject star = (GameObject)MonoBehaviour.Instantiate(Resources.Load("UIPrefabs/Star"));//设置坐标star.transform.parent = img.transform;//设置锚点Image starImg = star.transform.GetComponent<Image>() as Image;if(null != starImg){starImg.rectTransform.pivot = new Vector2(0.5f,0.5f);starImg.rectTransform.localScale = new Vector3(1,1,1);starImg.rectTransform.anchorMin = new Vector2(0,0.5f);starImg.rectTransform.anchorMax = new Vector2(0,0.5f);starImg.rectTransform.anchoredPosition3D = new Vector3(((2.0f*i-1)/2.0f*116+40*(i-1)),0,0);}}总体来说方法很简单,喜欢用代码更灵活的创建UI的同学可以尝试下。
阅读全文
0 0
- UGUI代码动态UI的大小、尺寸等信息
- UGUI文本字体颜色和大小等代码修改
- 获得控件大小(高度、宽度等)尺寸信息
- ImageView根据屏幕大小动态设置图片的尺寸
- 动态获得Linux终端的大小(尺寸)
- iOS设备分辨率、尺寸、图标大小等
- iOS设备分辨率、尺寸、图标大小等
- UGUI学习笔记(六) 获取到被点击的UI的信息
- [Unity&UI&NGU][UGUI]如何新建一个像《守望先锋》消息的信息框
- 屏幕的尺寸信息
- 从UGUI源码中想到的UI动态”挖洞”效果的实现(蒙版过滤)
- ugui学习——可动态改变Content大小的ScrollView
- ugui学习——可动态改变Content大小的ScrollView
- ugui学习——可动态改变Content大小的ScrollView
- 【学习ios之路:UI系列】修改图片的尺寸大小操作
- UGUI基于EventTrigger的UI交互事件监听系统&动态加载
- 如何控制弹出窗口的大小、尺寸、位置等的样式
- matlab的图像操作——输出图像尺寸大小、坐标轴等各项设置
- 连咸鱼都能学会的Zookeeper注册中心的搭建
- Mysql SQL优化&执行计划
- (转载)Struts2
- 走台阶问题的动态规划
- PREROUTING 和 POSTROUTING, SNAT 和 DNAT 剖析
- UGUI代码动态UI的大小、尺寸等信息
- sublime text3 3134注册码最新windows版本
- 最长漂亮子串
- Linux中SPI子系统图解和mini2440下的SPI驱动移植
- HDU 3336 Count the string(kmp next数组的性质)
- windows 下搭建ftp服务器
- git远程仓库时 Permission denied
- ConcurrentHashMap 之性能演进
- LeetCode : Different Ways to Add Parentheses