本帖最后由 感情偏食BZ8 于 2023-8-24 14:19 编辑
1.过多的动态内存分配: 频繁地使用 new 创建对象和数组会导致大量的垃圾回收,影响性能。尽量使用对象池或者复用对象来减少内存分配。特别是当在update中去new或是定义一个属性都是比较耗性能的。
像这个样子。如果确实有这个需要我们可以使用对象池优化一下。
2.大量的重复计算: 如果在循环中进行大量的重复计算,会增加 CPU 负载。尽量将重复计算提取到循环外部,避免重复计算。
例如:当你的人物攻击时得到了一大堆相同的攻击目标。这个时候我们可以将计算伤害的工作尽量的减少。
//直接进行计算
calculateDamage(): number {
const baseDamage = 10;
const strengthModifier = this.strength * 0.5;
const agilityModifier = this.agility * 0.2;
const intelligenceModifier = this.intelligence * 0.1;
return baseDamage + strengthModifier + agilityModifier + intelligenceModifier;
}
//------优化之后---------
//属性变化时进行计算
updateModifiers() {
this.strengthModifier = this.strength * 0.5;
this.agilityModifier = this.agility * 0.2;
this.intelligenceModifier = this.intelligence * 0.1;
}
//需要给伤害时直接给出
calculateDamage(): number {
const baseDamage = 10;
return baseDamage + this.strengthModifier + this.agilityModifier + this.intelligenceModifier;
}
3.多个的update: 在一些合并使用一个update的情况下可以避免一些不必要的性能消耗:
例如:在一个商店的中有多个物品,每一个物品的购买要求有一个cd,我们可以让每一个UI自己本身在update中去计算自身的CD,也可以将其放在商店的mainUI统一管理执行。后者就可以避免你多个item的update执行。
上面这种情况下就会有多个onUpdate被执行,而下面的情况下只有一个onUpdate被执行
4.-----非代码----不合理的触发器
可以看看这篇文章
触发器的原理与性能消耗
|