DreamGUI
诊断码

DUI4xxx · 取值

值和它写在的属性对不上。

本页由 scripts/diagnostics/sync.py 从插件的码表(EDreamUIDiagnosticCode)生成,卡片里的枚举名就是测试断言用的那个名字。

DUI4001

错误枚举名UnknownProperty

目标对象上没有这个名字的属性;消息会给出最接近的那个。

怎么会出现:裸的属性名依次在控件、它的视觉对象、(容器类型的节点上)它的布局容器、它的行为上查找,第一个有它的接收这个值,都没有就报这个码。Width、Height、AnchorLeft 这类细节面板上显示的标签不是属性名,消息会直接告诉你该怎么写。

Text Title {
    FontSzie = 14
    Width = 400
}

怎么改:照建议改名;尺寸写 AnchorData.SizeDelta = (w, h),锚点写 AnchorData.AnchorMin 和 AnchorData.AnchorMax。

DUI4002

错误枚举名UnknownPropertyPathSegment

一条开头能解析、后面解析不了的带点路径。

怎么会出现:A.B 里 A 是一个属性,但它不是结构体,没有字段可以往下走;或者它是结构体,却没有叫 B 的字段,这时消息会给出最接近的字段名。

Widget Panel {
    AnchorData.Size = (400, 240)
}

怎么改:照建议修正字段名,比如 AnchorData.SizeDelta。

DUI4003

错误枚举名ValueTypeMismatch

一个形状不可能成为该属性类型的值。

怎么会出现:字面量的种类与属性的类型对不上,比如给数字属性写字符串、给 FText 写没加引号的词;资产路径加载出来的不是属性要的类;当作值写的节点 id 指向的节点缺少属性要的那一部分(比如没有视觉对象),或者是另一种控件类;FName 属性的字符串超长;时间轴的关键帧值读不成那个属性的类型。

Text Title {
    FontSize = "large"
    Text = Settings
}

怎么改:按属性的类型写值:文本一律加引号,对象属性写能加载出正确类的路径。

DUI4004

错误枚举名TupleArityMismatch

一个元素个数不对的元组。

怎么会出现:元组按目标结构体读:二维向量 2 个,三维向量和旋转 3 个,边距 4 个。

Widget Panel {
    AnchorData.SizeDelta = (400, 240, 0)
}

怎么改:按结构体的分量个数写,比如 (400, 240)、(0, 8, 0, 0)。

DUI4005

错误枚举名UnknownEnumValue

一个属性的枚举没有声明的词。

怎么会出现:枚举属性上写的词不是这个枚举的值(消息会给出最接近的那个),或者写的数字不对应它声明的任何值。标志位枚举没有 |,组合要写成各标志相加后的数字。

Widget Panel {
    Visibility = Invisible
}

怎么改:照建议改成枚举里的值,比如 Collapsed 或 Hidden。

DUI4006

错误枚举名PropertyNotWritable

一个文本写不了的属性:瞬态的、已弃用的、属于对象图的,或者是委托。

怎么会出现:属性存在,但从 .dui 写它没有意义:瞬态属性(没有原生 setter 的那种)写进去的值保存不下来;已弃用的属性不再接受新值;Visual、LayoutContainer 这类实例化引用本身就是对象图,由嵌套和 + 来创作,而不是赋值;委托没有文本形式,事件要用 -> 路由。

Widget Panel {
    LayoutContainer = None
}

怎么改:容器用 + VerticalBox { … } 或容器类型的节点来写,事件用 ->;其余情况换一个可以写的属性。

DUI4007

错误枚举名UnknownResource

一个没有指向任何资源条目的 @Name。

怎么会出现:@Accent 代表 resources 块里叫 Accent 的那个条目(本文件的,或 use 带进来的);找不到就报这个码。用 @Name 写节点类型时也一样,它要求一个 Asset 条目。

resources {
    Color Accent = #FF6600
}

Text Note {
    Color = @Accnet
}

怎么改:修正名字,或者在 resources 块里声明这个条目。

DUI4008

错误枚举名ResourceTypeMismatch

一个值与声明的类型不符的资源,或者一个被当作节点类型、却不是 Asset 的资源。

怎么会出现:资源的类型是 Color、Number、Vector2、String、Asset 之一,值要符合它声明的类型;类型名不是这五个之一也报这个码。用 @Name 当节点类型时,那个条目必须是指向控件类的 Asset。

resources {
    Color Accent = 8
}

Text Note { Color = @Accent }

怎么改:让值符合类型(Color Accent = #FF6600),或者改正声明的类型。

本页目录