0
私は基本クラスにメソッドを追加するだけの派生クラスを持っていますが、基本クラスとして直列化したいのですが、これはゲーム用のもので、基本クラスを直接変更することはできませんXmlIncludeをベースに追加します。基本クラスにアクセスできない派生クラスのXmlInclude?
namespace CustomNPC
{
public class CustomNPCInteract : NPC
{
public CustomNPCInteract()
:base()
{
this.initializeNPC();
}
public CustomNPCInteract(AnimatedSprite sprite, Vector2 position, string defaultMap, int facingDir, string name, bool dateable, Dictionary<int, int[]> schedule, Texture2D portrait)
: base(sprite, position, defaultMap, facingDir, name, dateable, schedule, portrait)
{
this.initializeNPC();
}
public CustomNPCInteract(AnimatedSprite sprite, Vector2 position, int facingDir, string name, StardewValley.LocalizedContentManager manager = null)
:base(sprite, position, facingDir, name, manager)
{
this.initializeNPC();
}
private void initializeNPC()
{
this.age = 2; //child
this.manners = 2; //rude
this.socialAnxiety = 1; //shy
this.optimism = 1; //negative
this.gender = 1; //female
this.datable = false; //not-datable
this.homeRegion = 0; //Other
this.birthday_Season = "fall"; //fall 8
this.birthday_Day = 8;
}
}
}
名前空間とクラスの設定方法です。 CustomNPCInteractはNPCを継承しています。他のNPCと同様にシリアル化しますが、その特定のクラスを変更するアクセス権はありません。これは、NPCにシリアル化されたXMLのルートの名前を変更します
XmlSerializer serializer = new XmlSerializer(typeof(CustomNPCInteract),new XmlRootAttribute("NPC"));
すべてのヘルプは大幅に
コメントありがとうございます。私がmodを書いている実際のゲームは、既にデータを保存するために使用するSaveGame.serializerの下に独自のシリアライザインスタンスを持っています。既存のインスタンスを上書きするのではなく、追加する場所がありますか? – Kriogenic
いいえ、それを上書きする必要があります。どのXML文書にもルートノードが1つしかないため、XMLにデータを追加することはできません。デフォルトのシリアライザを自分のものに置き換えるのは簡単なことですが、それ以上のことを知らずに私はそれ以上の提案はできません。 – AQuirky