Unity UGUI 零 GC 更新视图完全工程化:脏标记、对象池与 TMP 实战
UI 是这个问题的重灾区,原因很现实:UI 天然是\”每帧都在变\”的。血条要动、倒计时要走、伤害数字要飘、排行榜要刷。每一处变化如果都产生一点托管分配,几十个控件叠加起来,每秒就是几百 KB 的垃圾——而这些垃圾最终会变成一次几毫秒的 GC 卡顿,恰好落在战斗最激烈的时候。
\”零 GC\”不是玄学,它是一份可枚举的分配点清单 + 三套固定手法。本文按这个思路来。
一、先把分配点列清楚
1.1 最常见的九个分配来源
| 1 | 字符串拼接 | \”HP: \” + hp / $\”HP:{hp}\” | 每个控件 1~2 |
| 2 | 数值格式化 | hp.ToString() / time.ToString(\”00:00\”) | 每个数字控件 1~3 |
| 3 | 装箱 | string.Format(\”{0}\”, someI |


