Unity中自适应UI位置不刷新问题

各种layout,contentSizeFitter,修改了子UI后都不立刻刷新,总之就是需要自己手动刷新,网上找到了方法,也在lua项目中实现了

LayoutRebuilder.ForceRebuildLayoutImmediate(rectTransform)

lua:
CS.UnityEngine.UI.LayoutRebuilder.ForceRebuildLayoutImmediate(self.panel.transform:Find("Bg"):GetComponent("RectTransform"))

-----------2022.11.22---------

今天不知道为什么,在某些情况下不好用了,但突然发现隐藏显示后UI会重排成正确的样子

所以利用协程把上面的方法改成了,

SetActive(true) WaitForEndOfFrame() SetActive(false) WaitForEndOfFrame()

完美解决

-----------2022.11.23---------

又出问题了,我做的是一个加分气泡,气泡会随着气泡内文字长度而自适应大小,同时气泡还有左右对齐的需求,修改文字时会出现气泡变宽从而越过边界的问题,再次展示位置则回归正常

我发现在UI组件在当前帧结束前可见,即ActiveSelf==true的情况下,在本帧修改UI内容,下一帧会自动更新布局

而在当前帧结束前不可见,ActiveSelf==false的情况下更新了,再SetActive(true)打开,并不会刷新布局

所以在修改之前先使其可见,修改自适应内容后,暂停一帧再关闭,即可解决UI内容不刷新问题

-----------2023.04.27---------

补充:有些手机设备性能比较差,暂停一帧不够,需要暂停两帧

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity,为了实现UI自适应分辨率,我们可以使用Canvas Scaler组件来进行设置。Canvas Scaler提供了几种不同的渲染模式,其包括Constant Pixel Size、Scale With Screen Size和Constant Physical Size。其,Scale With Screen Size是最常用的一种模式。 在Scale With Screen Size模式下,我们可以使用Match Width Or Height属性来控制UI的缩放。当Match属性设置为0时,屏幕的宽度对UI的大小没有影响,只有高度会对UI的大小产生影响。假设UI的宽度是Reference Resolution宽度的x倍,则UI整体缩放为Reference Resolution设置参数的x倍。同样地,当Match属性设置为1时,高度对UI的大小没有影响,只有宽度会对UI的大小产生影响。当Match属性设置为0.5时,宽度和高度对UI的大小都会产生影响,但是宽度的影响会比高度更大。一般来说,我们会将Match属性设置为0.5,以实现较好的自适应效果。 另外,还有一种渲染模式是Constant Pixel Size,它会保持UI的像素大小不变。这种模式适用于需要在不同分辨率下保持UI的像素一致的情况,比如在电脑和手机上显示相同大小的UI。 综上所述,UnityUI自适应分辨率可以通过Canvas Scaler的设置来实现,其Scale With Screen Size模式是最常用的一种。 #### 引用[.reference_title] - *1* *2* *3* [Unity基础篇:使UI跟随屏幕分辨率变化自适应。](https://blog.csdn.net/qq_15020543/article/details/82595179)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值