如何在重命名腌制python类后修复RenPy游戏保存加载?

时间:2016-09-02 15:23:51

标签: pickle monkeypatching renpy

有一个基于RenPy的游戏,它为一些游戏对象使用自定义Python类。 最近我们将一些模块和类重命名为重构的一部分。由于Pickle无法找到课程,因此打破了旧游戏的加载。

Pickle本身支持一种机制,可以通过类重命名来正确处理情况:https://wiki.python.org/moin/UsingPickle/RenamingModules

但是我无法将此代码应用于RenPy游戏,因为保存/加载过程由RenPy在其loadsave.py模块中控制。有没有办法在不修补RenPy代码的情况下修复加载?任何monkeypatch想法?

1 个答案:

答案 0 :(得分:1)

当我在Ren中移动东西时,我通常会做什么?Py只是创建一个别名,从类的旧名称到新名称。这对于pickle来说已经足够了 - 它会查找旧名称,并使用新名称创建一个类。

例如,如果我有

class OldClass(object):
    pass

并希望将其重命名为NewClass,我会得到代码:

class NewClass(object):
    pass

OldClass = NewClass

这也适用于模块。