Гармония — добавление свойства к объекту или аналогичный эффект.
Есть класс, который я не могу редактировать напрямую с помощью метода вроде
BuildingSaveData {
public override BuildingSaveData SaveTheThing(Building b){
this.propOne = b.propOne;
//etc etc
return this;
}
public SerializableVector3 propOne;
}
И где-то в дальнейшем он сериализуется и сохраняется на потом.
Затем в обратном порядке
public override Building LoadTheThing(Building b){
b.propOne = this.propOne;
//etc etc
return b;
}
Я хочу добавить к этому объекту свойство для сериализации/десериализации вместе со всем остальным.
Я не думаю, что можно добавить свойство во время выполнения к классу на C#, но я еще не очень знаком с Harmony, поэтому, возможно, в этом есть какая-то магия, о которой я не знаю.
Моя попытка
Вот что я пытаюсь сделать при сохранении:
[HarmonyPatch(typeof(BuildingSaveData))]
[HarmonyPatch(nameof(BuildingSaveData.SaveTheThing))]
public class BuildingSavePatch
{
static void Postfix(Building b, BuildingSaveData __result)
{
__result.localScale = b.transform.GetChild(0).localScale;
}
}
Но это вызывает очевидную ошибку: «BuildingSaveData не содержит определения для localScale».