unity3D学习笔记之七 RectTransform与屏幕适配

市面上的移动游戏UI布局分为两种:
1.全屏铺满
2.小屏居中
两种布局引出两种布局方式
相对布局和绝对布局
相对:
Image相对Panel顶部距离20 即Image尺寸跟随Panel尺寸改变 唯一固定的是距离顶部的距离20不变
此种对应全屏铺满的UI,比如返回按钮始终在右上角20像素出。
绝对:
Image位置不随Panel变化
此种布局对应小屏居中 在不同的分辨率上 屏幕变宽变高之后小屏始终居中,到四周边界会随分辨率变化。

Unity3D-UGUI框架是开源的,但是布局组件RectTransform的实现却是不可见的。。只有官方寥寥数言的文档可参考,又到了考验灵感和耐心的时候了。
void SetSizeWithCurrentAnchors(RectTransform.Axis axis, float size);按照的当前的anchor信息来设置尺寸。实际测试发现他根据的是pviot,设置的结果与anchors反而无关。
举例:
Image height = 640
SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical,610);
运行后更改对象的高度为610
至于是从上 中 下 哪部份减少30取决于pivot
pivot.y = 0 从上减少30
pivot.y = 1 从下减少30
pivot.y = 0.5 从两端各减少15

void SetInsetAndSizeFromParentEdge(RectTransform.Edge edge, float inset, float size);这个函数可以简单的理解为设置图元相对父图元边的距离以及图元的尺寸,其强大之处在于其完全不管你当前的pviot设置的啥,你的anchor设置的又是啥。
举例:
SetInsetAndSizeFromParentEdge (RectTransform.Edge.Left, 40, 960);
距离父节点左侧40 宽度960

sizeDelta:这个属性表示的就是offsetMax-offsetMin得到的向量,即图元从左下角指向右上角得到的向量。绝对布局下很好用,相对布局时不如所愿,猜测内部重新赋值了。

你可能感兴趣的:(编程心得,Unity,unity3d,ui,布局,移动游戏)