引言:定位性能问题的前提是理解协作机制
GC 频繁触发、DrawCall 居高不下、动画中途卡帧——这类问题的排查终点往往不是代码写法,而是对 MonoBehaviour、GameObject、Transform 等核心类协作机制的理解。API 会用只是起点,理解每个调用在引擎侧的真实成本,才能做出正确的架构与优化决策。
一、对象模型:组合优先的组件体系
1.1 GameObject 与 Component
Unity 的对象模型是组合模式的典型实现:GameObject 本身不承载功能,只是组件容器与标识;所有行为由挂载的 Component 提供。
// GameObject 的概念模型:组件集合 + 查询接口
public sealed class GameObject : Object
{
// 引擎内部以原生侧结构存储组件,托管层经句柄访问
public T GetComponent<T>() where T : Component { /* 按类型查询 */ }
}
public class PlayerController : MonoBehaviour
{
private Transform cachedTransform;
void Awake()
{
// transform 属性是对组件查询的封装;缓存避免重复开销
cachedTransform = transform;
}
void Update()
{
cachedTransform.Translate(Vec

