GetComponent()或访问字典之间是否存在性能差异?

时间:2013-11-06 20:19:43

标签: c# performance dictionary unity3d

我想在触发器输入时访问GameObject的一个组件。我可以使用GetComponent<CustomClass>(),或者我可以在Awake()创建GameObjects与Dictionary中CustomClass的连接,因此我可以按如下方式访问CustomClass:Dictionary[gameobject]

两者之间是否有任何性能差异?

2 个答案:

答案 0 :(得分:2)

对OnTriggerEnter使用.GetComponent()不应该是任何问题:: OnTriggerEnter的物理计算最有可能是资源密集型的10倍以上

我建议将Dictionary[Component]等优化保存为更多重复性任务,例如更新场景中的每个AI脚本或增加每个刚体的质量。

答案 1 :(得分:0)

Dictionary提供常量时间(简单英语:快速)查找。假设设置并保持最新并不是太多工作,它应该比GetComponent更快,这是一个更动态的查找。

但是,我确实想知道这是premature optimization