Unity3D UGUI强制刷新Layout(布局)组件

 

UGUI的Layout布局组件确实节省了我们很多代码

如果不使用Layout组件

那么光在计算UI的布局上就要花费很大的功夫

特别是动态生成其组件的时候

 

当然,Layout组件在大多数时候是非常好用的

也有让人头疼的时候

比如,一个组件内需要展开或者折叠

image

image

这时,刷新不及时带来的问题就出现了

比如展开时产生UI覆盖

折叠时产生UI空隙

都是让人头大的问题

 

幸好Unity提供了一个强制刷新UI的方法

便将此问题完美解决了

LayoutRebuilder.ForceRebuildLayoutImmediate(recttransform);

参数为挂有Layout组件的recttransform

为了确保能够正确的刷新

建议放在一个协程中,待帧结束后检测一次,若没有刷新再执行一次

IEnumerator UpdateLayout(RectTransform rect)
    {
        LayoutRebuilder.ForceRebuildLayoutImmediate(rect);
        yield return new WaitForEndOfFrame();
        Vector3 vecScale = rect.localScale;
        float width = rect.rect.width;
        float height = rect.rect.height;
        while (rect.rect.width == 0)
        {
            Debug.Log(rect.rect.width);
            LayoutRebuilder.ForceRebuildLayoutImmediate(rect);
            yield return new WaitForEndOfFrame();
        }
    }

转载于:https://www.cnblogs.com/fws94/p/8242989.html

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity的UGUIUnity Graphic User Interface)布局是通过RectTransform组件来实现的。RectTransform是一种特殊的Transform组件,它可以控制物体在屏幕上的位置、大小和旋转。 UGUI布局主要有以下几种方式: 1. 相对位置布局:使用锚点(Anchor)来设置物体相对于父级容器的位置。通过设置锚点的最小和最大值来确定物体的偏移位置,使用比例来自动适应不同屏幕分辨率。 2. 绝对位置布局:直接设置物体的位置坐标(position)来确定其在屏幕上的绝对位置。这种布局方式在需要精确控制物体位置时比较常用。 3. 自动布局:通过使用Layout组件(如Vertical Layout Group、Horizontal Layout Group)来实现物体的自动排列布局Layout组件会根据子物体的尺寸和间距来自动调整其位置和大小,使它们适应容器的尺寸。 4. 网格布局:使用GridLayout Group来实现物体的网格布局,可以设置行数、列数、间距和边界等参数来控制物体的位置和排列方式。 在使用Unity控制UGUI布局时,可以通过代码或者编辑器来进行设置。在代码中,可以获取RectTransform组件并通过设置其属性来控制物体的位置、大小和旋转。在编辑器中,可以直接在Inspector面板上通过拖拽和调整参数来实现布局控制。 UGUI布局的设计原则是灵活性和可适应性,可以根据不同的需求和场景来选择合适的布局方式。同时,还可以结合动画效果和事件系统来实现更复杂的交互和界面效果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值