Harmony - 为对象添加属性或类似效果

Harmony - add property to object, or similar effect

提问人:Randy Hall 提问时间:5/10/2023 更新时间:5/10/2023 访问量:139

问:

有一个类我不能直接用类似

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 的定义”

C# 和谐

评论


答: 暂无答案