哪一个性能更好?还是一样?因为我在一篇文章中看到过,该文章告诉我在每帧中缓存组件而不是getComponent

哪个更好的表现

void Update(){
    transform.localPosition
}


要么

Transform trans;

void Awake(){
    trans = GetComponent<Transform>();
}

void Update(){
    trans.localPosition;
}

最佳答案

您在文章上所读的内容是正确的:与在每一帧中使用GetComponent()相比,保存对组件的引用将对性能更有帮助。

但是,Unity会存储对附加了单行为脚本的对象的转换的默认引用。使用transform.localPosition(与this.transform.localPosition相同)时,您使用的是默认引用(与GetComponent()相比,它更类似于缓存组件的想法)。

要回答您的问题:
您提供的两种代码方法的性能几乎完全相同,只是第一种方法会跳过额外的引用分配(假设您在第二种方法的代码中的某处调用trans = this.transform)。

希望对您有所帮助!

关于c# - transform.localPosition与trans.localPosition(缓存),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35137410/

10-12 05:45