Godot 大型背包列表优化:虚拟滚动、复用与可预测的 UI 成本
背景:大型 UI 列表虚拟化为什么值得单独设计 背包刚做出来时只有几十个道具,GridContainer 里塞满 ItemCell 看起来很自然。上线前运营导入了几百个材料、碎片、活动道具和临时物品,问题立刻出现:打开背包卡一下,滚动时掉帧,切筛选时节点反复创建,图标异步加载回来还会错位。
tag
背景:大型 UI 列表虚拟化为什么值得单独设计 背包刚做出来时只有几十个道具,GridContainer 里塞满 ItemCell 看起来很自然。上线前运营导入了几百个材料、碎片、活动道具和临时物品,问题立刻出现:打开背包卡一下,滚动时掉帧,切筛选时节点反复创建,图标异步加载回来还会错位。
动画数量上来后,AnimationPlayer 也需要治理 Godot 的 AnimationPlayer 很直观:创建动画,添加轨道,播放名称。角色少、动作少时非常舒服。项目扩大后,一个角色几十个动作,多个角色共用部分动作,剧情、战斗、UI 都有动画。动画名、库、复用、更新和引用开始变得复杂。
本文回顾 Go 1.18 泛型出现前的代码复用方式,涵盖接口表达行为、函数参数注入策略和 interface{} 的边界使用,帮助理解泛型引入的设计背景。