哪一个性能更好?还是一样?因为我在一篇文章中看到过,该文章告诉我在每帧中缓存组件而不是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/