可变设置代码效率
本文关键字:效率 代码 设置 | 更新日期: 2023-09-27 17:55:36
在Unity 3D中工作时,我遇到了一个实际上只运行其他一些方法的方法的8ms自发时间。(假设整个方法需要10ms,自用时间为8ms,只有2ms进入"其他方法"。所以这 8ms 必须来自分析器中显示的方法)
注释掉东西后,我注意到问题可以追溯到几行代码。以下方法,当运行2200次时。自 ms 为 8。
private bool checkPiece (GameObject targetPiece,int side){
if(targetPiece == null) return false;
Transform targetTransform = targetPiece.transform;
Vector3 origin = myTransform.position;
Vector3 target = targetTransform.position;
/*
...
*/
return false;
}
我试图测试其中的每一个,只是做:
TransformtargetTransform = targetPiece.transform;
已经使2ms的自我时间。 如果你想以不错的帧速率运行,那就太糟糕了。除了显而易见的喜欢少运行此方法。如何改善这种行为?
我从未见过团结在设置转换和位置方面如此之高。
我已经尝试将变量放在方法之外,因此每次更新都会覆盖它们。然而,这根本没有区别。(我想这在构建代码时已经优化了?
任何帮助将不胜感激。
当抓取对象或大多数组件的转换时,您需要付出计算的代价。查看是否可以在将游戏对象的转换传递到函数之前使用缓存来存储这些转换。
您可以更改此行
private bool checkPiece (GameObject targetPiece, int side)
自
private bool checkPiece (Transform targetPiece, int side)