困扰我好久的UGUI ScrollView扩容和排布--个人学习记录

写这个自己都感觉自己辣鸡。

先根据大佬说说组件吧。

Horizontal Layout Group是HorizontalOrVerticalLayoutGroup的子类,HorizontalOrVerticalLayoutGroup又是LayoutGroup的子类


图中包括以下属性: 
1、Padding:RectOffset类型,矩形偏移 
源码如下:

public sealed class RectOffset
{
    public RectOffset();
    public RectOffset(int left, int right, int top, int bottom);

    ~RectOffset();

    public int bottom { get; set; }       //底边缘
    public int horizontal { get; }        //水平
    public int left { get; set; }         //左边缘
    public int right { get; set; }        //右边缘
    public int top { get; set; }          //顶边缘
    public int vertical { get; }          //垂直

    public Rect Add(Rect rect);           //向一个Rect添加边框偏移
    public Rect Remove(Rect rect);        //从一个Rect移除边框偏移
    public override string ToString();      
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

Child Alignment:TextAnchor枚举类型,文本锚点 
源码如下:

public enum TextAnchor
{
    UpperLeft = 0,           //上左
    UpperCenter = 1,         //上中
    UpperRight = 2,          //上右
    MiddleLeft = 3,          //中左
    MiddleCenter = 4,        //中中
    MiddleRight = 5,         //中右
    LowerLeft = 6,           //下左
    LowerCenter = 7,         //下中
    LowerRight = 8           //下右
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

Child Force Expand:有两个可选 
(1)Width:是否强行扩大布局元素宽度以填补额外可用的空间 
(2)Height:是否强行扩大布局元素高度以填补额外可用的空间

勾选Width,填补宽度 ,勾选Height,填补高度 ,勾选Width和Height,填补宽度和高度 
实际开发中,经常结合Content Size Fitter组件一起使用 

Horizontal Fit和Vertical Fit均为UI.ContentSizeFitter.FitMode枚举类型,有三个值可选:Unconstrained,MinSize,PreferredSize

Unconstrained:不执行任何调整 
MinSize:调整内容的最小大小 
PreferredSize:调整内容的首选大小,也就是会自动根据内容来调整大小

使用Content Size Fitter组件,RectTransform组件会发生响应的变化 
默认情况下RectTransform组件的Width 和 Height 可以在编辑模式下就行修改,当Horizontal Fit不为Unconstrained时,Width不可修改,同理,Vertical Fit不为Unconstrained时,Height不可修改。

代码中,如果需要获取这个gameobject的Width 和Height,下图中提供了Preferred Height和Preferred Width的获取方式 


右下角可以看出数据的Source是Text组件,那么我们就可以通过GetComponent().PreferredWidth和PreferredHeight来获得。

当然不是所有情况,这两个数据的source都是Text!!!




猜你喜欢

转载自blog.csdn.net/Edision_li/article/details/80667374
今日推荐