我想在触发器输入时访问GameObject的一个组件。我可以使用GetComponent<CustomClass>()
,或者我可以在Awake()
创建GameObjects与Dictionary中CustomClass的连接,因此我可以按如下方式访问CustomClass:Dictionary[gameobject]
。
两者之间是否有任何性能差异?
答案 0 :(得分:2)
对OnTriggerEnter使用.GetComponent()
不应该是任何问题:: OnTriggerEnter的物理计算最有可能是资源密集型的10倍以上
我建议将Dictionary[Component]
等优化保存为更多重复性任务,例如更新场景中的每个AI脚本或增加每个刚体的质量。
答案 1 :(得分:0)
Dictionary
提供常量时间(简单英语:快速)查找。假设设置并保持最新并不是太多工作,它应该比GetComponent
更快,这是一个更动态的查找。
但是,我确实想知道这是premature optimization。