2

したがって、IXmlSerializable を継承し、Texture2D との間で暗黙的にキャストする Texture2DProcessor クラスがあります。

public static implicit operator Texture2D(Texture2DProcessor o)
{
    return o.Data;
}
public static implicit operator Texture2DProcessor(Texture2D o)
{
    return o == null ? null : new Texture2DProcessor(o);
}

次に、タイプが Texture2DProcessor に設定された XmlElement 属性を持つ Texture2D プロパティを含む構造体 GunProperties を用意します。

Texture2D _sideSprite;
[XmlElement(typeof(Texture2DProcessor))]
public Texture2D SideSprite
{
    get { return _sideSprite; }
    set { _sideSprite = value; }
}

次の実行時エラーが発生します

Cannot serialize member '...GunProperties.SideSprite' of type 'Microsoft.Xna.Framework.Graphics.Texture2D'

XmlSerializer が Texture2DProcessor を使用して Xml データを読み書きしないのはなぜですか?

また、ReadXml および WriteXml メソッドが機能することもわかっています。これは、これが正常に機能し、テクスチャを使用できるためです。

Texture2D texture;
XmlSerializer serializer = new XmlSerializer(typeof(Texture2DProcessor));
serializer.Deserialize(new FileStream(path, FileMode.Open), texture);

私がこの問題を経験している理由は、私がモノゲームを使用していて、コンテンツ パイプラインが特にカスタム タイプでかなりめちゃくちゃになっていて、この問題以外はすべて機能しているためです。

4

1 に答える 1