2

ContentTypeReader を使用したいゲームを書いています。このようにモデルをロードしている間:

terrain = Content.Load<Model>("Text/terrain");

次のエラーが表示されます。

Error loading "Text\terrain". Cannot find ContentTypeReader
AdventureGame.World.HeightMapInfoReader,AdventureGame,Version=1.0.0.0,Culture=neutral.

この種のエラーはアセンブリ名のスペースが原因で発生する可能性があることを読んだので、それらをすべて削除しましたが、それでも例外が発生します。

これは私のコンテンツクラスです:

[ContentTypeWriter]
public class HeightMapInfoWriter : ContentTypeWriter<HeightmapInfo>
{
    protected override void Write(ContentWriter output, HeightmapInfo value)
    {
        output.Write(value.getTerrainScale);
        output.Write(value.getHeight.GetLength(0));
        output.Write(value.getHeight.GetLength(1));

        foreach (float height in value.getHeight)
        {
            output.Write(height);
        }       
    }

    public override string GetRuntimeType(TargetPlatform targetPlatform)
    {
        return
            "AdventureGame.World.Heightmap,AdventureGame,Version=1.0.0.0,Culture=neutral";
    }

    public override string GetRuntimeReader(TargetPlatform targetPlatform)
    {
        return
        "AdventureGame.World.HeightMapInfoReader,AdventureGame,Version=1.0.0.0,Culture=neutral";        
    }
}

誰もその種のエラーを以前にmeedしましたか?

4

1 に答える 1

1

私は 1 週間同じ問題に遭遇しており、最終的に「アセンブリ」部分全体を簡単にチェックすることにしました。

私は修正を見つけました!

基本的に、AssemblyInfo.cs にアクセスすると、すべてのプロパティ (タイトル、説明など) が表示されます。

悲しいことに XNA によって作成されたタイトルは、ランタイム リーダーが参照するものではありません。実際には、プロジェクトの最初の名前を取得します。これは、プロジェクト内のアプリケーション (exe) ファイルを追跡するために使用されます。プロジェクトを最初から作り直して、名前空間をプロジェクトと同じに保ち、決して変更しないようにするか、プロジェクトの debug/obj フォルダーにある exe ファイルの名前を変更してみてください(i信じます)。私が助けてくれることを願っています!

-意思

于 2012-12-24T07:57:59.943 に答える