Unity 塔防实战(35):对象池、NonAlloc 碰撞与延迟回收如何稳住大规模战斗

📅 2026/7/31 12:32:57
Unity 塔防实战(35):对象池、NonAlloc 碰撞与延迟回收如何稳住大规模战斗
塔防战斗很容易出现一种现象:前几波运行流畅,怪物、子弹和 Buff 多起来后,帧率却开始周期性下降。问题通常不在某个“特别慢”的函数,而是大量小开销在同一帧叠加——创建子弹、搜索目标、检测碰撞、派发事件、播放特效以及回收死亡对象。本篇不只讨论“怎样减少 GC”,还会结合 Demo 的实际代码,分析对象池解决了什么、没有解决什么,以及当战斗规模继续扩大时应该优先优化哪里。MyFramework:https://github.com/ZHOURUIH/MyFramework塔防 Demo:https://github.com/ZHOURUIH/MyFramework_TDDemo一、先看一帧战斗的主要开销战斗进行时,核心工作大致可以归为五类:更新怪物移动、生命期和死亡状态;防御塔搜索目标并触发技能;更新全部子弹的位置与朝向;执行范围查询、碰撞检测和伤害结算;派发事件并创建枪口、飞行、命中特效。对象池主要压低的是“反复创建和销毁”产生的内存波动,但目标搜索、物理查询和事件监听器的执行时间仍然存在。因此,优化时要分