Unity UI Toolkit中如何用C#获取transitionDuration的值?
解决Unity UXML中获取VisualElement过渡时长返回null的问题
你的代码里直接访问_creditSection.style.transitionDuration.value返回null,核心原因是transitionDuration属于StyleProperty<TimeValue>类型,其value字段是object类型,直接读取会因为未正确解析类型返回null,按以下方式修改即可正确获取:
修正后的代码
private VisualElement _creditSection; private void Start() { var rootElement = uiDocument.rootVisualElement; _creditSection = rootElement.Q("CreditSection"); // 先检查该过渡属性是否已被设置 if (_creditSection.style.transitionDuration.IsSpecified()) { // 将object类型强制转换为TimeValue TimeValue transitionTime = (TimeValue)_creditSection.style.transitionDuration.value; // 获取具体时长(单位为秒,float类型) float duration = transitionTime.value; Debug.Log($"过渡时长:{duration}秒"); } else { Debug.Log("该元素未设置过渡时长属性"); } }
关键说明
IsSpecified()方法用来判断该样式属性是否已在UXML或代码中被赋值,避免转换空值报错TimeValue是Unity UI Toolkit中专门处理时间样式的类型,转换后通过其value字段就能拿到具体的秒数数值
内容的提问来源于stack exchange,提问作者Mfa Xyz
相关产品推荐
相关产品推荐

