ゴール
Texture2D
プロセッサーを使用せずに、デフォルトのインポーター (XML コンテンツ) を使用して、xml ファイルからを含むカスタム クラスをロードしようとしています。
アプローチ
オンラインで多くの調査を行い、他のエラーを処理することで、次の XML にたどり着きました。
<?xml version="1.0" encoding="utf-16"?>
<XnaContent xmlns:Components="Entities.Components">
<Asset Type="EntitiesContentPipeline.EntityTemplateContent">
<Name>entity name</Name>
<TestTexture>
<Reference>#External1</Reference>
</TestTexture>
</Asset>
<ExternalReferences>
<ExternalReference ID="#External1" TargetType="Microsoft.Xna.Framework.Graphics.Texture2D">C:\Documents and Settings\GDuckett\My Documents\Visual Studio 2010\Projects\Gravitron\Gravitron\Gravitron\bin\x86\Debug\Content\Bullet.xnb</ExternalReference>
</ExternalReferences>
</XnaContent>
はい、ハードコードされたパスも好きではありませんが、カスタム リーダーやライターを使用せずにこれを機能させることができれば、それを使用Texture2D
できます。
以下は、クラスのコンテンツ バージョンです (パイプラインで使用されます)。
[ContentSerializerRuntimeType("Entities.Content.EntityTemplate, Entities")]
public class EntityTemplateContent
{
public string Name;
public ExternalReference<Texture2D> TestTexture;
public EntityTemplateContent()
{
}
}
以下は私のランタイムバージョンです:
public class EntityTemplate
{
public string Name;
public Texture2D TestTexture;
public EntityTemplate()
{
}
}
問題
以下を試してみると、var test = Content.Load<EntityTemplate>("BulletTemplate");
次のエラーが表示されます。
「弾丸」の読み込み中にエラーが発生しました。ContentTypeReader Microsoft.Xna.Framework.Content.Texture2DReader、Microsoft.Xna.Framework.Graphics、Version=4.0.0.0、Culture=neutral、PublicKeyToken=842cf8be1de50553 は、既存のハンドラー Microsoft.Xna.Framework.Content.ReflectiveReader`1[[Microsoft .Xna.Framework.Graphics.Texture2D、Microsoft.Xna.Framework.Graphics、Version=4.0.0.0、Culture=neutral、PublicKeyToken=842cf8be1de50553]]、Microsoft.Xna.Framework、Version=4.0.0.0、Culture=neutral、PublicKeyToken Microsoft.Xna.Framework.Graphics.Texture2D 型の場合は =842cf8be1de50553。
ランタイム リーダーは、Texture2D
アセットを処理するための 2 つのリーダー、ReflectiveReader<Texture2D>
リーダーとを見つけたようTexture2DReader
です。
質問
この問題を解決するにはどうすればよいTexture2D
ですか? ロードされたテクスチャを参照するプロパティを使用して、オブジェクトが正しく取り込まれますか?
注:別の文字列プロパティを追加して、オブジェクトにメソッドなどを作成したくありませんLoadContent
。Content.Load
私は私が電話する必要がある唯一のものになりたいです。
また、プロパティを含むすべての型に対して独自のリーダー/ライターを作成することも避けたいと考えていTexture2D
ます。
理想的には、Texture2D またはサブクラスのラッパー クラスを作成することは避けたいと考えていますが、代替手段がない場合は、これを行うソリューションに満足しています。