我正在构建一个UI框架的小层,它基于UI工具包。 我已经到了一个阶段,我花了很多时间绑定uxml和C#脚本来实现:

BindDirective("item-count").Text(FormatCountText);

BindDirective("selected-name").Text(_selected, item => item != null ? item.Name : "—");
BindDirective("selected-qty").Text(_selected,
    item => item != null && item.Quantity > 1 ? $"x{item.Quantity}" : string.Empty);

BindDirective("add-slot").Click(AddSlot).Enable(() => _slots.Count < MaxSlots);
BindDirective("remove-slot").Click(RemoveSlot).Enable(() => _slots.Count > MinSlots);

(BindDirective是一个自定义的方法,允许我为Visual元素添加行为)

所以我想到了在uxml文件中添加更多功能。

因为Unity不支持自定义属性在现有的组件上,所以我选择了尝试代码生成和解析uxml模板。

这很难看,文件解析非常机械,但它有效!

(UI Builder也不会去掉这些字段,真幸运)