7

私のコードは

new GameFont(Content.Load<SpriteFont>("LoadingFont"), "LoadingFont")

私が読んだことによると、VS2010 を使用してアセットを .xnb 形式にコンパイルし、それを bin ディレクトリの Content サブフォルダーに配置する必要があります。しかし、「LoadingFont アセットを読み込めませんでした!」というエラーが表示されます。

他に何をすべきか本当にわかりません。XNA 4 を使用して作成されたアセットは機能しないという非常に古い投稿を読みましたが、それがまだ正しいかどうか、または XNA のバージョンを 3.1 に変更する方法がわかりません。

何か案は?おそらく、VS2010 をまったく使用しないより良い方法があるでしょうか?

4

5 に答える 5

11

プロジェクトのコンテンツ フォルダーにコンテンツを追加し、[ビルド アクション] を [コンテンツ] に設定しましたか (プロパティ ウィンドウで)。

.xnb 形式のアセットを使用するプロセスが正確にはわかりません。その方法で実行できることはわかっていますが、通常は生の画像と音声ファイルを Content フォルダーに直接追加するだけです。ただし、フォントはそのようにするのが少し難しいかもしれません。

編集:2015

この質問が書かれてから、多くのことが変更されました。最近のモノゲームには、コンテンツを XNB ファイルに処理するための独自のパイプライン ツールがあります。最初に試すことはSpriteFont、新しいパイプラインを使用して処理することです。これにより、XNA に完全に依存する必要がなくなります。

または、MonoGame でのフォントの問題を回避する別の方法は、BMFontツールを使用してフォントをテクスチャに事前レンダリングし、 MonoGame.Extendedを使用してゲームでレンダリングすることです。

MonoGame.Extendedをインストールすると、BMFont で作成されたフォントを読み込むことができますが、代わりにクラスSpriteFontを使用します。BitmapFont

_bitmapFont = Content.Load<BitmapFont>("my-font");

次に、次のようにテキストをレンダリングします。

 _spriteBatch.Begin();
 _spriteBatch.DrawString(_bitmapFont, "Hello World", new Vector2(100, 200), Color.Red);
 _spriteBatch.End();

ブログに完全なチュートリアルがあります

于 2013-01-25T01:07:15.127 に答える
8

私はVS2012でMonoGameを問題なく使用しています。Content.Load<T>("myContent")まだ私のために働いています。最近気になっていることの 1 つ (ヒント: 睡眠不足のときはコーディングしないでください) は、ソリューション エクスプローラーでアセットが [出力ディレクトリにコピー] に設定されていることを確認する必要があることです。アセットはそれに対応していないため、そのエラーが発生します-そこにないものをロードできません! アセットを右クリックし、[プロパティ] の下を確認します。それらが「コピーしない」に設定されている場合は、それを変更する必要があります。

于 2013-01-31T09:56:10.977 に答える
1

@craftworkgamesのように、私はあなたに完全な答えを与えることはできません。しかし、XNA 3.1に付属していた従来のコンテンツパイプラインは4になりました。したがって、アセットは少し異なる方法でロードする必要があります。たとえば、.pngアセットをロードしてスプライトを表示するには、次のようにします。

rock = Texture2D.FromStream(GraphicsDevice, TitleContainer.OpenStream(@"Rock-Large-Stones-PT.png"));

通常どおり、.pngファイルをソリューションに追加します。フォントについても似たようなものになると確信していますが、まだ完全には理解していません;)

于 2013-01-25T22:46:38.713 に答える
1

あなたがそれを解決したかどうかわからない同じ問題を抱えていましたが、これが私がしたことです。

「Content」フォルダーの下にある Monogame Content Pipeline をクリックします。

スプライトフォントまたはテクスチャを追加します。

モノゲーム コンテンツ パイプラインで、アクションを「ビルド」から「コピー」に変更したことを確認します。

次に、コンテンツを簡単にロードしたい場合。texture = content.Load("texture.png");

お役に立てれば :)

于 2015-07-05T11:23:04.973 に答える
0

同様の問題がありましたが、「Windows 8 Store」をターゲットプラットフォームとして使用していました... Windows Open GLバージョンではすべて問題ありませんでした。Windows 8 で content.Load("Fonts/TestFont") を試したところ、「コンテンツ以外のファイルとして読み込めませんでした」というメッセージが表示されました。

ソリューション内の MonoGame DLL を MonoGame.Windows8 プロジェクト (CodePlex からソースをダウンロードしたもの) に置き換え、デバッグを行いました。MonoGame が bin...\Debug\AppX フォルダー内の Content フォルダーを検索することがわかりました。 ...ビルド中に Content フォルダーが別の場所にコピーされます。そのため、Content フォルダーを AppX フォルダーに手動でコピーしたところ、エラーがなくなり、ゲームのプロトタイプが正常に動作するようになりました。

私は、AppX に関連するプロジェクトの環境設定のいくつかの設定を見逃していたと思います (おそらく、このフォルダーは Windows 8 デバイス エミュレーターに必要ですか?) または... MonoGame は別の場所で Content フォルダーを探す必要があります... とにかく更新しますコンパイル中に間違った場所にコピーされるため、現時点ではコンテンツ フォルダーを手動で削除します。

プロジェクトにコンテンツ フォルダーがあり、ビルド アクションが正しく設定されています (コンテンツ)...そして [常にコピー] が選択されていますが、ビルド (コンパイル) 中にコンテンツ フォルダーがデバッグ フォルダーにコピーされ、Debug\AppX にコピーされる必要があります。そうしないと、MonoGame はそれを見つけることができません。(私は現在仕事中で、問題は自宅の PC にあるため、正確なパスが間違っている可能性があります)

たぶん、私の Visual Studio 2012 の構成の問題です。

この情報がお役に立てば幸いです。

于 2013-02-06T07:56:38.057 に答える