Unity3d-调用公共静态变量性能

时间:2018-08-26 10:30:38

标签: c# performance variables unity3d static

我想知道是否从Update或FixedUpdate函数中的另一个脚本中调用公共静态变量,这会影响性能吗?

类似:

[RequireComponent(typeof(Rigidbody))]

public class CC : MonoBehaviour
{
    //Components
    public static Rigidbody rigidbodys;

    void Awake()
    {
        rigidbodys = GetComponent<Rigidbody>();
        rigidbodys.freezeRotation = true;
        rigidbodys.useGravity = false;
        rigidbodys.isKinematic = true;
    }
}

在另一个脚本中:

void FixedUpdate()
{
      if(CC.rigidbodys.velocity > 1)
          {
            DoSomething();
          }
}

如果我使用这种方式,会降低性能吗?

2 个答案:

答案 0 :(得分:2)

这看起来非常好。 在您的固定更新中,您仅访问rigibody(设置为一次唤醒),这很便宜。 您还可以制作普通的公共刚体僵尸,并将您配置的游戏对象传递到检查器中。然后,您可以将内容传递给静态刚体。这样就清理了Awake。

    void Awake()
    {
        rigidbodys = ridbdy;
    }

从性能方面(>表示更好): 静态>单例模式> GetComponent / FindObject

答案 1 :(得分:0)

只要将getComponent()保留在update()中,它就会比例如在另一个脚本中计算速度要快。