gpt4 book ai didi

c# - 获取 GameObject 引用的最快方法是什么?

转载 作者:行者123 更新时间:2023-11-30 16:43:53 28 4
gpt4 key购买 nike

假设我的脚本定义如下。

public GameObject _GameObject;

private void Start()
{
[![enter image description here][1]][1]
_GameObject = gameObject;
}


这会执行得更快吗?

public void SetActive(bool value)
{
[1]: /image/S60FB.jpg
gameObject.SetActive(value);
}

还是这个?

public void SetActive(bool value)
{
_GameObject.SetActive(value);
}

最佳答案

在 Unity 4.x 及以下版本中,缓存方法会明显更快。在那些版本中,MonoBehaviour.transform 和 MonoBehaviour.gameObject 实际上并不是字段;相反,“在引擎盖下”,它们的行为就像带有附加访问器的属性。

因此访问 gameObject 属性将通过访问器调用 Component.get_gameobject() 方法。当然,方法调用自然会比简单的内存访问带来更多的开销。 (Transform 更糟;显然访问器实际上调用了 GetComponent 方法来返回值!)

这就是为什么您会经常看到经验丰富的 Unity 开发人员缓存这些值。

据我所知,Unity 5 中已简化此过程以获得更好的性能;使用内置属性仍会产生非常少量的开销,但据报道它是微不足道的。

来源:https://blogs.unity3d.com/2014/06/23/unity5-api-changes-automatic-script-updating/

关于c# - 获取 GameObject 引用的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44169865/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com