panda3d - 如何重启游戏
我有一个用Python写的游戏,使用了Panda3d这个库。现在我想要一个重启的功能,也就是说,我希望按一个按钮后,游戏的主程序能够重新执行,就像当前这个游戏实例从来没有存在过一样。
有没有简单的方法可以做到这一点呢?
2 个回答
1
如果你想要重新开始,你需要手动创建一个函数,让它完成你想要的事情。关于这个问题,Panda网站上有一篇帖子,详细讲解了这个内容,链接在这里:https://www.panda3d.org/forums/viewtopic.php?t=11422
3
其实不是的。Panda3D并没有提供这种抽象功能,这要由应用程序开发者自己来处理。具体情况具体分析,“重启”到底是什么意思?你是想关闭当前的窗口,然后再打开一个新窗口吗?如果不是,那就意味着你需要保持很多Panda3D的对象不变,而不能简单地重新创建ShowBase实例。不过,你是否想把已经加载到内存中的模型卸载掉呢?你想把你的用户界面对象的几何信息重新发送到显卡吗?
所以,根据你的具体需求,你需要卸载并处理那些需要重启的对象,然后再重新创建它们。如果你采用面向对象的方式,并且合理地组织你的对象,这应该是比较简单的。也就是说,你可以在你的游戏对象上实现一个unload()方法,专门用来卸载与这个游戏相关的东西,然后让对这个对象的引用消失(这样它就会被垃圾回收),接着再创建一个新的对象。(要小心循环引用!如果有循环引用,可能会导致旧的对象实例在内存中保留,即使它们已经不再使用了。)