1

我有一个用 Python 编写的游戏,我使用 Panda3d。现在我想有重启的可能,也就是我想按下一个按钮,结果是再次执行main,就好像游戏的当前实例不存在一样。

有没有一种简单的方法可以做到这一点?

4

2 回答 2

3

并不真地。Panda3D 并没有真正进行这种抽象,这取决于应用程序开发人员。“重启”的真正含义取决于具体情况;是否要关闭现有窗口然后重新打开一个新窗口?如果不是,那么这意味着您必须保留许多 Panda3D 对象并且不能简单地重新创建 ShowBase 实例。但是你想卸载任何加载到内存中的模型吗?是否要将 UI 对象的几何图形重新发送到显卡?

因此,根据您的特定需求,您必须卸载并删除需要重新启动然后重新创建它们的对象。如果您使用面向对象的方法并正确构建对象,这应该很简单 - 即,您在 Game 对象上实现 unload() 卸载特定于该游戏的内容,然后让对该对象的引用消失(导致它被垃圾收集),并创建一个新的。(当心循环引用!如果你有它们,它们可能会将你的对象的旧实例保留在内存中,即使它们已经超出范围。)

于 2013-03-20T11:39:55.357 回答
1

如果你想重新启动,你必须手动创建一个函数并让它做你需要它做的事情。Panda 网站上有一篇关于这件事的帖子,网址为https://www.panda3d.org/forums/viewtopic.php?t=11422

于 2015-03-05T12:30:01.633 回答