可变设置代码效率

时间:2014-03-31 13:45:56

标签: c# variables unity3d variable-assignment profiler

在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;
}

我试图测试每一个,只是这样做:

  

转换targetTransform = targetPiece.transform;

已经有2ms的自拍时间。如果你想以合适的帧率运行,那就太可怕了。 除了显而易见的喜欢运行这种方法之外。如何改善这种行为?

我从来没有见过团结在设置变换和位置上这么高。

我已经尝试将变量放在方法之外,因此他们只会覆盖每次更新。然而,这没有任何区别。 (我想在构建代码时已经对此进行了优化?)

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

当抓取对象或大多数组件的变换时,您需要为计算付出代价。看看你是否可以使用缓存来存储你的gameObject的变换,然后再将它们传递给函数。

您可以更改此行

private bool checkPiece (GameObject targetPiece, int side)

private bool checkPiece (Transform targetPiece, int side)