我有一个用Python编写的游戏,我使用的是Panda3d。 现在我希望有一个重启的可能性,也就是说,我想按一个按钮,结果是再次执行main,就好像当前的游戏实例从未存在过一样。
有一种简单的方法吗?
答案 0 :(得分:3)
不是真的。 Panda3D并没有真正实现这种抽象,这取决于应用程序开发人员。具体情况取决于“重启”的真正含义;要关闭现有窗口然后重新打开新窗口吗?如果没有,那么这意味着您必须保留许多Panda3D对象,并且不能简单地重新创建ShowBase实例。但是,您是否想要卸载加载到内存中的任何模型?是否要将UI对象的几何图形重新发送到图形卡?
因此,根据您的特定需求,您必须卸载并删除需要重新启动的对象,然后重新创建它们。如果您使用面向对象的方法并正确构造对象,这应该是直截了当的 - 即,您在Game对象上实现卸载()卸载特定于该游戏的东西,然后让对该对象的引用(导致它)被垃圾收集),并创建一个新的。 (注意循环引用!如果你有它们,它们可能会将对象的旧实例保留在内存中,即使它们已超出范围。)
答案 1 :(得分:1)
如果您想重新启动,则必须手动创建一个功能并让它执行您需要它执行的操作。熊猫网站上有一篇关于这件事的帖子,https://www.panda3d.org/forums/viewtopic.php?t=11422