2011-07-26 2 views
5

私のXNA 3.1プロジェクトでは、プロジェクトのほとんどのモデルで必要と思われるキューブマップ(* .dds)ファイルがあります。モデルによって参照TextureImporter とTextureProcessorを使用して、:アセットは異なる設定で2回構築されていますが、何ができますか?

資産は異なる設定で2回を建てました:私は、パイプラインにコンパイルするキューブマップが設定された私のプロジェクトをビルドするために行くとき、私はこのような何かを行くのエラーを受け取ります\ AlphaDeadTree.X (RacingGameModelProcessor)、モデル\ AlphaPalm.X (RacingGameModelProcessor)、モデル\ AlphaPalm2.X (RacingGameModelProcessor)、モデル\ AlphaPalm3.X (RacingGameModelProcessor)...

などなど等々。いくつかのGoogleの結果によると、ファイルをディレクトリから削除するだけで、物理ファイルをそのディレクトリに保持することで問題は解決されますが、プロジェクトのコンテンツノードから削除されてもコンテンツパイプラインにはロードされないそのファイルを必要とするモデルにもかかわらず。

この時点で、私は何をすることができますか?その巨大な警告メッセージを無視する唯一の選択肢ですか?

答えて

3

あなたのContent.contentプロジェクトで参照モデルテクスチャ(texture \ SkyCubeMap.dds、Shaders \ Textures \ NormalizeCubeMap.dds、...)を直接参照しています。これは正しくありません。あなたのコンテンツプロジェクトからは、モデルで使用されるモデル(.X)のみを参照する必要がありますが、モデルで使用されるテクスチャ( .tga、* .ddsなど)は必要ありません。これらのテクスチャを心配する必要はありません。それらは自動的に配置され、インポートされ、処理されます。

たとえば、Tank.Xというモデルがあり、そのモデルでTank.ddsというテクスチャが使用されている場合は、コンテンツプロジェクトにTank.Xを含めるだけです。 Tank.ddsを含めるとエラーが発生します。

一方、あなたは手でをロードしようとしているコンテンツプロジェクトのテクスチャに含める必要があります:Content.Load(「My​​ByHandLoadedTexture」);

モデルから同じテクスチャを手動でロードする必要がある場合は、モデルを複製してモデルに1つのコピーを使用し、もう1つのコピーをコンテンツプロジェクトに含めて手動でロードする必要があります。

+0

ああ、優秀!私はちょうどそのキューブマップファイルの読み込みと処理に専念したコードファイル全体を見つけました。それは今、すべて意味があります、ありがとうございます。 ここで学んだ重要な教訓は、テンプレートやあらかじめ作成されたプロジェクトを変更するのではなく、自分で作成したときにコードを実際に学ぶことだと思います。しかし、もう一度あなたの助けに感謝します。 – TGP1994

0

cubemapは、1つ以上のモデルで参照されているため(firs時間)、コンテンツプロジェクトによって明示的に参照されるため(2回目)、2回構築されます。

コンテンツプロジェクトから削除してください。注意してください。削除して「削除」をクリックしないでください。削除すると、ディスクから削除されます。それを右クリックし、コンテキストメニューから「プロジェクトから除外」(または同様のものを選択します。私はVisual Studioのローカライズ版を使用し、正確なオプションラベルは英語ではわかりません)。

+0

私のプロジェクトから除外して申し訳ありませんが、私は「コンテンツノードからの削除」と言っていました。私がそれを行うと、デバッガによるとファイルが失われてしまいます。ファイル名に_0が付加されて構築されます。 – TGP1994

+1

すべてのモデルはRacingGameModelProcessorで処理されていますか? キューブマップへの他の参照が(他のフォルダの)コンテンツプロジェクトツリーにまだ表示されていないことを再度確認しましたか?テキストエディタ(メモ帳)でContent.contentプロジェクトファイルを編集し、検索(Ctrl + F)を行うことで確認できます。 –

+0

返事が遅れました。コンテンツツリーに2回追加されています。 2つ目を削除した後も、同じエラーメッセージが表示されます。それは、すべてのモデルがRacingGameModelProcessorによって処理されているように見えるので、各処理の実行をModelProcessorに戻して、それが何かを完了するようにします(私はその時点でコード内のコメントをかなり引用しています。それは私がそれを投稿するのを助ける?) – TGP1994

3

また、テクスチャを右クリックしてプロパティダイアログで「ビルドアクション」オプションを探し、「なし」に設定します。これはXNA 4.0で私のために働く。