我想知道是否从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();
}
}
如果我使用这种方式,会降低性能吗?
答案 0 :(得分:2)
这看起来非常好。 在您的固定更新中,您仅访问rigibody(设置为一次唤醒),这很便宜。 您还可以制作普通的公共刚体僵尸,并将您配置的游戏对象传递到检查器中。然后,您可以将内容传递给静态刚体。这样就清理了Awake。
void Awake()
{
rigidbodys = ridbdy;
}
从性能方面(>表示更好): 静态>单例模式> GetComponent / FindObject
答案 1 :(得分:0)
只要将getComponent()保留在update()中,它就会比例如在另一个脚本中计算速度要快。