Гармония — добавление свойства к объекту или аналогичный эффект.

Есть класс, который я не могу редактировать напрямую с помощью метода вроде

      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».

0 ответов

Другие вопросы по тегам