我正在将一款游戏从Ruby移植到C++。有一个主要的渲染循环来更新和绘制内容。现在让我们说,在游戏中,你想要选择一个项目另一个屏幕。在原始代码中完成的方式是做Item item = getItemFromMenu();
getItemFromMenu
是一个函数,它将打开菜单,并有自己的更新/渲染循环,这意味着在整个过程中玩家有另一个屏幕打开,你在嵌套渲染循环。我觉得这是一个不好的方法,但我不知道为什么。另一方面,它非常方便,因为我可以用一个函数调用打开菜单,所以代码是本地化的。 任何想法,如果这是一个糟糕的设计或没有? 我毫不犹豫地张贴在gamedev,但由于这是主要是一个设计问题我张贴在这里嵌套渲染循环是不好的做法吗?
编辑:一些伪代码给你一个想法:
通常的循环中的主要部分代码:
while(open) {
UpdateGame();
DrawGame();
}
现在
内UpdateGame()我会做这样的事情:
if(keyPressed == "I") {
Item& item = getItemFromInventory();
}
而且getItemFromInventory()
:
while(true) {
UpdateInventory();
if(item_selected) return item;
DrawInventory();
}
我一直挣扎在VB.NET应用了类似的事实是,在渲染循环,以保持GUI从冻结和崩溃和死亡,但也避免了污秽样-的“进度窗口”执行'DoEvents'引入线程。这意味着我的进度窗口中只有一个会一次更新。我并不介意,而且它可以避免线程。但它感觉恶心。我离开它现在... – 2012-01-16 22:23:49
一个坏事,我可以用这个看到的是在你有这样的游戏循环,取决于它是如何做的所有的地方可能重复的代码。 – Xeo 2012-01-16 23:04:14
你可以显示你想要的伪代码吗? – 2012-01-16 23:08:32