XNA モノゲームのシンプルな FBX モデルのロード
-
21-12-2019 - |
質問
Visual Studio Express 2013 で Monogame を使用して fbx (cube.fbx) モデルをロードしようとしています。私が周りを見回したところ、これは非常に簡単であるはずだと言えます。しかし、問題の解決策が見つかりません。
私の環境は Visual Studio Express 2013 with Monogame です。
何を試しても次のエラーが発生します。
「キューブ アセットを非コンテンツ ファイルとしてロードできませんでした」
fbx ファイルの設定を次のように変更しました。[コンテンツ、常にコピー]
以下のように、「コンテンツ インポーター」または「コンテンツ プロセッサ」オプションはありません。 http://msdn.microsoft.com/en-us/library/bb203933.aspx
初期化関数は次のとおりです。
protected override void Initialize()
{
// TODO: Add your initialization logic here
Model model;
Texture2D tex2d;
tex2d = Content.Load<Texture2D>("spot");
model = Content.Load<Model>("cube");
base.Initialize();
}
プログラムは、モデルをロードしようとする行でエラーをスローします。
願わくば、それが愚かなことであることを祈ります。
問題を再現するためのテスト ソリューションをここにアップロードしました。https://www.dropbox.com/s/2a6lir2z04kyv7u/CubeTest.rar
よろしくお願いいたします。
編集:次のディレクトリ構造を追加して、テスト アプリの構造を示します。
C:.
│ CubeTest.sln
│
└───CubeTest
│ CubeTest.csproj
│ Game1.cs
│ Icon.ico
│ Program.cs
│
├───bin
│ └───Windows
│ ├───Debug
│ │ │ CubeTest.exe
│ │ │ CubeTest.pdb
│ │ │ CubeTest.vshost.exe
│ │ │ Lidgren.Network.dll
│ │ │ MonoGame.Framework.dll
│ │ │ SharpDX.Direct2D1.dll
│ │ │ SharpDX.Direct2D1.xml
│ │ │ SharpDX.Direct3D11.dll
│ │ │ SharpDX.Direct3D11.xml
│ │ │ SharpDX.Direct3D9.dll
│ │ │ SharpDX.Direct3D9.xml
│ │ │ SharpDX.dll
│ │ │ SharpDX.DXGI.dll
│ │ │ SharpDX.DXGI.xml
│ │ │ SharpDX.MediaFoundation.dll
│ │ │ SharpDX.MediaFoundation.xml
│ │ │ SharpDX.RawInput.dll
│ │ │ SharpDX.RawInput.xml
│ │ │ SharpDX.XAudio2.dll
│ │ │ SharpDX.XAudio2.xml
│ │ │ SharpDX.XInput.dll
│ │ │ SharpDX.XInput.xml
│ │ │ SharpDX.xml
│ │ │
│ │ └───Content
│ │ Cube.fbx
│ │ spot.png
│ │
│ └───Release
├───Content
│ cube.fbx
│ spot.png
│
├───obj
│ └───x86
│ └───Debug
│ │ CubeTest.csproj.FileListAbsolute.txt
│ │ CubeTest.csprojResolveAssemblyReference.cache
│ │ CubeTest.exe
│ │ CubeTest.pdb
│ │ DesignTimeResolveAssemblyReferencesInput.cache
│ │
│ ├───InProcessTempFiles
│ │ _CubeTest.g.cs
│ │
│ └───TempPE
└───Properties
AssemblyInfo.cs
解決
コンテンツを正しく構築するには、コンテンツを別のプロジェクト、つまり適切な名前の「コンテンツ プロジェクト」に入れる必要があります。XNA では、メイン プロジェクトにコンテンツ参照を追加しますが、MonoGame では、コンテンツ プロジェクトのビルド時に生成される .xnb ファイルへのリンクを手動で追加する必要があると思います。
したがって、cube.fbx と Spot.png をコンテンツ プロジェクトに移動し、右クリック -> [既存の項目の追加] をクリックして、コンテンツ プロジェクトの出力フォルダーから cube.xnb と Spot.xnb を追加します。常に最新のコピーを使用できるように、[追加] ボタンの矢印をクリックして [リンクとして追加] を選択してください。
他のヒント
ファイルが適切な場所にあるかどうか確認しましたか?私もあなたと同じように長い間エラーを抱えていましたが、それは単にファイルをプロジェクトの適切な場所に配置しなかったためです。
(プロジェクトのパラメータとコンピュータ上のファイルをチェックインします)
提供されたソリューションでは、fbx モデルの名前は Cube.fbx ですが、「キューブ」しようとしています。fbx ファイル名の大文字の C は重要です。したがって、「cube」の代わりに「Cube」をロードしてみてください