C#/GDScript的陷阱

避免在Update()里使用Find()和GetComponent()——缓存引用到Awake()。Godot中用@onready替代运行时查找。

Unity/C# 和 Godot/GDScript 最容易被滥用的性能杀手:在 Update() 里频繁使用 Find()、GetComponent()、FindObjectOfType()。这些调用每一帧都遍历场景或组件列表——帧数高时每帧几十上百毫秒的浪费。

正确做法:在 Awake() 或 Start() 中缓存引用到私有字段,Update() 中直接用缓存。Godot 中可以用 @onready var 在节点就绪时自动获取。如果一个组件在很多地方被用到,考虑用单例模式或 Service Locator(服务定位器)。

另一个常见陷阱:在 Update() 里分配内存(new List、string 拼接、装箱拆箱),触发 GC。C# 中用 StringBuilder 代替 string +=,用 ListPool/ObjectPool 代替频繁 new List。移动端的 GC 卡顿比 PC 明显得多——在这些平台上优化内存分配是基本功。

💡 微信搜索「别装没看见」小程序,44+ 开发技巧随时翻阅