2016-09-02 7 views
0

いくつかのゲームオブジェクトにカスタムPythonクラスを使用するRenPyベースのゲームがあります。 最近リファクタリングの一部として、モジュールとクラスの名前を変更しました。これは、Pickleがクラスを見つけることができないため、古いゲームセーブのロードを壊しました。Pickled Pythonクラスの名前を変更した後にRenPyゲームを修復する方法

ピクルス自体が適切にクラスの名前を変更して状況に対処するためのメカニズムをサポートしています。https://wiki.python.org/moin/UsingPickle/RenamingModules

セーブ/ロード処理が、それはloadsave.pyモジュールの中でRenPyによって制御されているので、私はRenPyゲームにこのコードを適用することはできませんが。 RenPyコードにパッチを適用せずにローディングを修正する方法はありますか?どんなmonkeypatchのアイデアですか?

答えて

1

Ren'Pyで物を動かすときに私が普通にやることは、クラスの古い名前から新しい名前にエイリアスを作成することです。それはpickleには十分です。古い名前を参照し、新しい名前のクラスを作成します。私は

class OldClass(object): 
    pass 

を持っていたNewClassに名前を変更したい場合

たとえば、私は、コードを持っているでしょう:

class NewClass(object): 
    pass 

OldClass = NewClass 

これは、あまりにも、モジュール間で動作します。

関連する問題