Skip to content

Restoration Register

woctordho edited this page Oct 2, 2022 · 1 revision

存档系统注册

如果你写了一个新的前端组件,要在读档时恢复它的状态,以DialogueBoxController为例:

  1. 在class的Awake中写上gameState.AddRestorable(this);OnDestroy中写上gameState.RemoveRestorable(this);
  2. 让class继承IRestorable interface
  3. 定义restorableName,一般可以与Lua绑定用的名字相同
  4. 定义DialogueBoxControllerRestoreData,用来存储这个前端组件的状态
    • 这个class需要实现IRestoreData,并且标上[Serializable] attribute,所有field也必须是serializable的
    • 一般可以把所有field设成readonly
    • Nova已经提供了MaterialDataRectTransformDataTransformDataVector3DataVector4Data,需要存储这些object的状态时可以直接调用
  5. 定义GetRestoreData,用来把这个前端组件的状态保存到restore data中
  6. 定义Restore,用来根据restore data恢复这个前端组件的状态
Clone this wiki locally