2012-09-21 37 views
0

我目前正在编写一款游戏,而我目前正在尝试的是使用循环替换游戏中的多个“对象”。如何一次性执行这些多个方法调用?

当我说“对象”时,我并不是指OOP中的一个对象,而是我的游戏中的一个简单实体,它绘制在缓冲区上(例如:岩石或树)。

现在,这种替换对象的方法工作得很好,如果它只是一些对象,但如果我试图替换多达25个对象,它看起来有点奇怪。

我的意思是,你可以看到每次更换一个物体,而不是一次。 (我的理解,这是因为任务是在一个循环中执行)

这几乎总结我在做什么,编程:

for(int i = 0; i < tilesToReplace; i++) //Looping through the total amount of tiles that will be replaced 
//Spawning an object in the desired tile 
spawnObject(objectPatch.objectId, //irrelevant, (new object ID) 
     objectPatch.coords[0][i], //irrelevant, X Coordinate of the current index 
     objectPatch.coords[1][i]); //irrelevant, Y Coordinate of the current index 

我已经想过做一些诸如暂停直到我想要替换的所有对象都被初始化,但我想知道是否有更简单的方法来处理这种循环,例如处理我不知道的循环。 (我真的不瞄准的变化,我可以用我的对象/渲染处理做,等)

+1

除非您多线程,否则这是您可以做的最多的。 – Vulcan

+1

即使你是多线程,也只有一个线程应该完成所有的绘图。没有任何代码,很难说。如果我们正在拖延东西被“绘制”,双缓冲可能是一个选择。 – John3136

回答

0

我想这exampleN = 10;更换100个标签仍然同时出现。这个问题存在于你的程序的其他地方,你将不得不去profile的代码来看看它在哪里。作为一般原则,尽可能缩短您在event dispatch thread上的活动时间; sscce,对于example,可能是一个有用的练习。

0

如果您使用C++进行开发,您可以设置屏幕缓冲。您在下一个屏幕缓冲区(未显示的缓冲区)上处理更改。然后在处理完成后,切换屏幕以显示该缓冲区。

您使用的是C还是C++。这是为什么游戏在C上更好地工作的一个例子。

相关问题