0

有一个基于 RenPy 的游戏,它对一些游戏对象使用自定义 Python 类。最近我们重命名了一些模块和类作为重构的一部分。这破坏了旧游戏保存的加载,因为 Pickle 找不到类。

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

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

4

1 回答 1

1

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

例如,如果我有

class OldClass(object):
    pass

并想将其重命名为 NewClass,我将拥有以下代码:

class NewClass(object):
    pass

OldClass = NewClass

这也适用于模块。

于 2016-09-03T05:21:17.607 回答