我需要你的帮助,在审查我的代码,并给我一些建议,如果我可以改进它。
我在遵循unity课程,这家伙做了这个脚本来检查界限:
if(transform.position.x < -boundRange)
{
transform.position = new Vector3(-boundRange, transform.position.y, transform.position.z);
}
if(transform.position.x > boundRange)
{
transform.position = new Vector3(boundRange, transform.position.y, transform.position.z);
}
A找到了一种有点不同的方法来实现同样的事情,只需要一个if语句,就像这样:
if(Mathf.Abs(transform.position.x) + .1 > boundRange)
transform.position = new Vector3(
transform.position.x / Mathf.Abs(transform.position.x) * boundRange, transform.position.y, transform.position.z
);
我想了解哪种方式更好,为什么,并给我更多关于良好做法的建议
我对此并不十分担心。在编程中有很多方法可以做最简单的事情。例如,应用到您的案例中,对于abs值:
a = System.Math.Math.Abs(f);
a = UnityEngine.Mathf.Abs(f);
a = Unity.Mathematics.math.abs(f);
if (f >= 0) a = f; else a = -f;
a = f >= 0 ? f : -f;
你需要找到更易读+可理解+标准的那个,让代码对你和你的团队来说都很容易理解。如果您在update()
中,您可能还需要考虑一些性能方面的问题,但在开始时,我也不会太担心这一点。对于您的特定情况,我发现第一个代码片段更易读,而在第二个代码片段中,如果x=0,则会出现问题。我会在你的应用程序的架构方法和unity组件方法上更加小心,让你的思维符合unity的哲学,而不是把任何一个小的事情变成最好的方式。那么你编写的代码越多,你就会越注意细节而没有意识到。希望这有道理!