zoukankan      html  css  js  c++  java
  • 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();
            }
        }
  • 相关阅读:
    2-Fourteenth Scrum Meeting-20151214
    2-Thirteenth Scrum Meeting-10151213
    2-Twelfth Scrum Meeting20151212
    2-Eleventh Scrum Meeting20151211
    L465 Climate Change May Take Away Your Ability to Flush the Toilet
    L458 Interview
    L457 早上锻炼减肥
    L456 学英语 看美剧
    L455 人之初,性本衰
    L454 正确喝水
  • 原文地址:https://www.cnblogs.com/fws94/p/8242989.html
Copyright © 2011-2022 走看看