UE5——UMG——分析1

SWiget控件基本都继承这个三大类:SPanel,SCompoundWidget,SLeafWidget

SLeafWidget:没有Slot的Widget,自己就是控件树的叶子节点

SCompoundWidget:一个Slot的Widget,Slot内可以放置一个子Widget

SPanel:多个Slot的Widget,通过OnArrangeChildren对Widget布局
在这里插入图片描述

布局

在这里插入图片描述
Anchors:锚点,缩放时相对于父控件的位置
1.最小值和最大值相等时,缩放不会拉伸,可以指定Position和Size
在这里插入图片描述
2.最小和最大不相等时,缩放时会根据锚定的比例拉伸,可以指定0ffset
在这里插入图片描述
计算的代码
在这里插入图片描述
Alignment:对齐,相当于指定控件枢轴点,原点
1.在锚点不相等时[可拉伸时],Alignment无效
2.在锚点相等时[不可拉伸时〕,顶点坐标会减去Alignment*Size值

Z0rder:决定绘制顺序的排序值,小的先画,大的后画
1.不同Z0rder的Batch不会合并

Padding/Size/Horizontal Alignment/Vertical Alignment
在这里插入图片描述
1.简单版的Slot,本质和上面没区别,但可控的模式会少一些
2.Size Auto会根据ChildDesiredSize来设置大小
3.Size Fill会根据指定比例平摊剩余空间

绘制和布局入口 OnPaint:
在这里插入图片描述
布局函数 0nArrangeChildren:
1.由ArrangeChildren调用,ArrangeChildren由OnPaint调用
2.有多个Child Slot的控件有单独实现
3.LeafWidget不用专门实现这个函数

GetDesiredSize 控件自己的渴望大小
1.得到Widget大小,内部计算后会缓存
2.Auto模式会使用这个值作为FixedSize,总大小减去总Fixed,剩余由Fi模式填充
在这里插入图片描述
SlatePrepass 平滑预传递
1.SWindow会使用prepass预先计算DesireSize并缓存
2.prepass内部也会按需递归调用所有子控件做prepass,会根据NeedPrepass确定是否需要
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值