You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Unity UI Toolkit中将Length类型转为int获取UI元素宽度

Unity UI Toolkit:解决Length转int的类型错误问题

你遇到的错误是因为UnityEngine.UIElements.Length并非单纯的数值类型,它同时包含数值大小和单位信息(比如px、%),所以无法直接隐式或强制转换为int。以下是几种可行的解决方式:

1. 直接提取Length的数值并转int

如果你的宽度设置的是固定像素值,可以直接获取Length.value(返回float),再转为int:

// 获取样式中设置的宽度数值(float)
float widthFloat = SomeGroupBox.style.width.value;
// 按需转int,可选取整方式
int width = Mathf.RoundToInt(widthFloat);
// 或者直接截断小数部分
// int width = (int)widthFloat;

2. 处理相对单位(如百分比)的情况

如果宽度是百分比这类相对单位,value返回的是百分比的数值(比如50%对应value=50),需要结合父元素的实际宽度计算像素值:

// 获取父元素的实际渲染宽度
float parentWidth = SomeGroupBox.parent.resolvedStyle.width;
// 获取百分比数值
float percentValue = SomeGroupBox.style.width.value;
// 计算实际像素宽度
float actualWidth = parentWidth * (percentValue / 100f);
// 转为int
int width = Mathf.RoundToInt(actualWidth);

3. 获取元素实际渲染宽度(更推荐)

如果你需要的是元素在界面上实际显示的宽度,而非样式中设置的宽度,直接使用resolvedStyle.width即可,它返回的是float类型的像素值,转int更直接:

int width = Mathf.RoundToInt(SomeGroupBox.resolvedStyle.width);

内容的提问来源于stack exchange,提问作者Amarth Gûl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 16:40:05