gpt4 book ai didi

c# - GetComponent<>() 是否影响性能

转载 作者:太空宇宙 更新时间:2023-11-03 17:29:48 25 4
gpt4 key购买 nike

正如标题所说,GetComponent() 确实对性能有很大影响。

我问这个是因为我不喜欢这样做:

public class Player : MonoBehaviour
{
PlayerStats playerStats = this.GetComponent<PlayerStats>();

void Update()
{
var something = playerStats.Asd;
}
}

我喜欢这样使用它:

public class Player : MonoBehaviour
{
void Update()
{
var something = this.GetComponent<PlayerStats>().Asd;
}
}

这样做的原因是因为我喜欢破坏很多脚本中的代码(如果需要,我以后可以更轻松地更改某些内容,也可以为多个对象使用一个脚本),所以如果我有很多脚本,我需要查看如果我已经定义了 PlayerStats playerStats.... 但不仅是这个,还有很多。

那么使用第二种方法会大大降低我的游戏速度吗?

最佳答案

值得注意的是,您的第一个脚本无效且无法编译。正确的做法是使它成为一个全局变量,但在 StartAwake 函数中缓存或初始化脚本。这些函数运行一次并用于初始化。

像这样:

PlayerStats playerStats;

void Start()
{
playerStats = this.GetComponent<PlayerStats>();
}

为了回答您的问题,影响性能的 GetComponent 函数被大大夸大了。您可以在互联网上随处阅读此内容,但这取决于它的使用频率。如果它偶尔使用一次或只在几个脚本中使用,那么它完全没问题。

如果您有数百个在 Update 函数中使用 GetComponent 的脚本实例,那么您将开始注意到一些性能下降,因为 GetComponent 正在调用 native 端。 因此,这取决于它被调用的频率以及每帧有多少脚本实例进行此调用。


关于c# - GetComponent<>() 是否影响性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50205533/

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