2016-09-02 60 views
0

有一個基於RenPy的遊戲,它爲某些遊戲對象使用自定義的Python類。 最近我們重新命名了一些模塊和類作爲重構的一部分。由於Pickle無法找到課程,這打破了舊遊戲存檔的加載。如何修復RenPy遊戲在重命名醃製python類後保存加載?

泡椒本身支持的機制,妥善處理與類重命名的情況:https://wiki.python.org/moin/UsingPickle/RenamingModules

但是我不能這個代碼適用於RenPy遊戲,因爲保存/加載過程由RenPy在它的loadsave.py模塊控制。有沒有修補加載而無需修補RenPy代碼的方法?任何monkeypatch的想法?

回答

1

當我在Ren'Py中移動東西時,通常會做的是僅從類的舊名稱到新名稱創建一個別名。對於泡菜來說就足夠了 - 它查找舊名稱,並用新名稱創建一個類。

舉例來說,如果我有

class OldClass(object): 
    pass 

,並希望將其重命名爲的NewClass,我將不得不代碼:

class NewClass(object): 
    pass 

OldClass = NewClass 

此功能適用於各種模塊,太。