私はオンラインでいくつかの同様の質問を見てきましたが、私の問題を解決する答えが見つかりませんでした. クラスからデータ(登録情報)を取得してxmlファイルに入れようとしています。プログラムは次の行を超えません。
var serializer = new XmlSerializer(typeof(AccountStructure));
そしてエラー:
InvalidOperationException: To be XML serializable, types which inherit from
IEnumerable must have an implementation of Add(System.Object) at all levels of
their inheritance hierarchy. UnityEngine.Transform does not implement
Add(System.Object).
私は自分が間違っていることに困惑しており、助けていただければ幸いです。私はまだネットワーキングの初心者なので、記事へのリンクはあまり役に立ちません。適切な構文、または私がすべきこととその理由の説明は驚くべきものです!
PS - Unity ゲーム エンジンで MonoDevelop C# を使用しています。
以下は私のクラスのコードです:
アカウント情報クラス: エラーの場所
using UnityEngine;
using System.Collections.Generic;
using System.Xml;
using System.Xml.Serialization;
//using System.Runtime.Serialization;
using System.IO;
[XmlRoot("UserInfo")]
public class AccountStructure : MonoBehaviour {
[XmlElement]
public string Username;
[XmlElement]
public string Password;
[XmlElement]
public string Email;
[XmlElement]
public int Age;
[XmlElement]
public bool isMember;
public void Save(string path){
Debug.Log("1");
//DataContractSerializer dcs = new DataContractSerializer(typeof(AccountStructure));
var serializer = new XmlSerializer(typeof(AccountStructure));
Debug.Log("2");
var stream = new FileStream(path, FileMode.Create);
serializer.Serialize(stream, this);
stream.Close();
}
public void Add(System.Object obj){
}
}
サーバー RPC
[RPC]
public void Register(string Username, string Password, string Email, int Age, NetworkPlayer Player){
if(Network.isServer){
RegisterData.Username = Username;
RegisterData.Password = Password;
RegisterData.Email = Email;
RegisterData.Age = Age;
RegisterData.isMember = true;
log += " Sending Data";
RegisterData.Save(Path.Combine(Application.persistentDataPath, "info.xml"));
log += " Sent Data";
}
}
クライアントコール
[RPC]
public void Register(string Username, string Password, string Email, int Age, NetworkPlayer Player){
アライメントエラーについてお詫び申し上げます。
編集:不要なコードを削除しました。