当前位置: 首页 > article >正文

【解决】Layout 下创建槽位后,执行 Image 同步槽位位置后表现错误的问题。

开发平台:Unity 6.0
编程语言:CSharp
编程平台:Visual Studio 2022

一、问题背景 | 开发库存系统


图1 位置同步失败问题
图2 位置正常同步效果表现

黑框 作用于 UnityEngine.UI.GridLayoutGruop,形成 4x6 布局,如图1所示。
图标 同步至 黑框位置。

public class Example : MonoBehaivour
{
	//...
	void Start() {
		
		this.m_InventoryUI = FindFirstObjectByType<InventoryUI>();
		this.m_InventoryUI.InitEnvironment();
		this.m_InventoryUI.InitInventory(4, 6);
		
		// 添加图标
		this.m_InventoryUI.Add(ItemType.Capsule);
		this.m_InventoryUI.Add(ItemType.Cube);
		this.m_InventoryUI.Add(ItemType.Sphere);
	}
}

二、问题原因


在执行添加物品时,UnityEngine.UI.GridLayoutGruop 并未完成对 黑框 布局的调整任务。

三、解决方法


3.1 延迟帧/秒 执行添加任务

Utils.TimeCoroutine.Delay(1, ()=> { // 添加操作 })

即 使用 StartCoroutine 推迟添加的操作。

3.2 在执行添加任务前,强制刷新


Canvas.ForceUpdateCanvases();

这是强制 Canvas 所有UI更新信息。在仅针对少量 UI 上是有效,但 UI 量一旦增大。则应该考虑下类执行代码:

LayoutRebuilder.ForceRebuildLayoutImmediate(RectTranform rt);

其中 rt 为布局组件对象上的 RectTransform 组件。即 手动强制更新。

其他

尝试过直接使用 layout.SetHorizontalLayout() 等来自继承类的方法来更新布局,但实际上,问题表现仍然存在。


http://www.kler.cn/a/392624.html

相关文章:

  • Unity学习笔记(4):人物和基本组件
  • HTTP协议基础
  • 车载空气净化器语音芯片方案
  • 《MYSQL45讲》误删数据怎么办
  • Scala入门基础(17.1)Set集习题
  • 图像处理实验二(Image Understanding and Basic Processing)
  • 为什么RNN(循环神经网络)存在梯度消失和梯度爆炸?
  • 自动驾驶系列—自动驾驶车辆的姿态与定位:IMU数据在复杂环境中的关键作用
  • Python PyQt5 实现 .his 文件批量转 Excel 工具
  • 代码版本管理艺术
  • 【Python TensorFlow】进阶指南(续篇一)
  • SpringCloud学习笔记
  • LeetCode【0021】合并两个有序链表
  • HBuilder(uniapp) 配置android模拟器
  • php回调函数(匿名)的使用
  • IC 脚本之VIM 记录
  • 构建高效在线商店:Spring Boot框架应用
  • three.js 杂记
  • mysql 常用命令(二)
  • ROS1 Noetic编程环境搭建和练习
  • aws-athena查询语句总结
  • 视频播放相关的杂记
  • ChromeDriver 官方下载地址_测试自动化浏览器驱动
  • FreeRTOS源码(二) 任务调度
  • 数据湖与数据仓库的区别
  • Hive1.2.1与Hbase1.4.13集成---版本不兼容问题