deltaTime作为每个对象的局部变量,还是单个共享变量?

时间:2016-01-06 06:29:07

标签: c# timedelta

让我们说我有一个带有Update()方法的GameWorld。除了我的GameWorld,我还有一个带有Update()方法的GameObject类。

GameWorld有我的GameObject类的0 .. *实例,GameWorld中的Update()方法在我的GameWorld中的所有GameObjects上调用Update()。

我需要在每个GameObjects中使用deltaTime,这是我的问题: 可以在我的GameWorld中创建deltaTime,让所有GameObjects通过GameWorld来访问deltaTime。此deltaTime将在GameWorld的Update()中更新。

或者最好在GameObject类中创建一个本地deltaTime变量,这样每个对象都有自己的deltaTime,让每个GameObject上的Update()处理deltaTime?

做一个或另一个是否有任何利弊,或者它会给我相同的结果吗?

1 个答案:

答案 0 :(得分:0)

我认为每个deltaTime的{​​{1}}会更好。如果您有大量对象且其GameObject函数内的计算需要花费大量时间,则Update()的{​​{1}}可能与自对象&#以来的实际已用时间不同39; s最后更新。此外,根据您选择实施程序的方法,每个对象的时间差异可能会有所不同,这可能会导致额外的复杂情况。

例如,假设您有两个deltaTime个实例。调用GameWorld并计算GameObject。现在,如果第一个对象需要意外的长时间更新,第二个对象将收到一个GameWorld.Update(),它小于自上次更新以来经过的实际时间。此外,在下一次更新中,第一个对象将收到大于实际值的deltaTime

在我看来,你应该选择这样的东西:

deltaTime

计算成本和内存的开销可以忽略不计,尽管是静态的"在大多数情况下,deltaTime的实现可能就足够了,上面的代码可以让您免于后来的麻烦。