让我们说我有一个带有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?
做一个或另一个是否有任何利弊,或者它会给我相同的结果吗?
答案 0 :(得分:0)
我认为每个deltaTime
的{{1}}会更好。如果您有大量对象且其GameObject
函数内的计算需要花费大量时间,则Update()
的{{1}}可能与自对象&#以来的实际已用时间不同39; s最后更新。此外,根据您选择实施程序的方法,每个对象的时间差异可能会有所不同,这可能会导致额外的复杂情况。
例如,假设您有两个deltaTime
个实例。调用GameWorld
并计算GameObject
。现在,如果第一个对象需要意外的长时间更新,第二个对象将收到一个GameWorld.Update()
,它小于自上次更新以来经过的实际时间。此外,在下一次更新中,第一个对象将收到大于实际值的deltaTime
。
在我看来,你应该选择这样的东西:
deltaTime
计算成本和内存的开销可以忽略不计,尽管是静态的"在大多数情况下,deltaTime
的实现可能就足够了,上面的代码可以让您免于后来的麻烦。