2013-01-24 6 views
7
でMonogameを使用してロードするために、コンテンツ取得できません

私のコードは、私が読んだことによるはVS2012

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

である、あなたは、.xnbフォーマットにあなたの資産をコンパイルするためにVS2010を使用する必要がどのI完了したら、それらをbinディレクトリのContentサブフォルダに配置します。しかし、「LoadingFontアセットを読み込めませんでした!」というエラーが表示されます。

私は他に何をすべきかわかりません。私は非常に古い記事を読んで、XNA 4を使って作られた資産はうまくいきませんが、それが本当であるかどうか、あるいはXNAのバージョンを3.1に変更する方法はわかりません。

アイデア?おそらく、VS2010をまったく使用しないと良い方法がありますか?

+0

あなたのターゲットはどのプラットフォームですか? Windows 7以前、Windows 8などMonoGameの最新リリースはXNA 4.0互換性を達成しているので、XNA 3.1に戻ってはいけません。 – borrillis

答えて

11

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

アセットを.xnb形式で使用するプロセスが正確にはわかりません。私はそれがそうすることができることを知っていますが、私は通常、生のイメージとサウンドファイルを直接私のコンテンツフォルダに追加します。フォントはそうしたやり方をするのがややこしいかもしれません。

EDIT:2015

物事の多くは、この質問が書かれた以降に変更されました。最近MonoGameはXNBファイルにコンテンツを処理するために独自のPipeline toolを持っています。まず、新しいパイプラインを使用してSpriteFontを処理することです。このようにして、XNAに依存する必要性を避けることができます。

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

installed MonoGame.Extendedになったら、SpriteFontと同じようにBMFontで作成したフォントを読み込むことができますが、代わりにBitmapFontクラスを使用します。

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

私は私はあなたに完全な答えを与えることはできません@craftworkgames同様full tutorial on my blog

+1

これはかなりです。明らかに、彼らは/ bin/contentに入っているだけで、実際にはソリューションにいなければならないので、Monogameの1つのバージョンでそれを行う方法を変更しました。それを解決に追加すると:) – NibblyPig

+4

"Copy if Newer"にファイル自体のビルドコピープロパティを設定すると、私のために働いた。 – Mastro

+0

@ ashes999私は動作するリンクを更新しました。この質問が尋ねられたとき、2013年以来少し変わったことがあります。 – craftworkgames

1

を持っていますので、同じよう

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

その後、いくつかのテキストをレンダリングします。しかし、XNA 3.1に付属の従来のコンテンツパイプラインは4になっています。したがって、すべてのアセットはわずかに異なる方法でロードする必要があります。

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

を、通常のような溶液に.pngのファイルを追加します。たとえば、次の私はスプライトを表示するには、.pngの資産をロードします。私はそれがフォントのために似たようなものになるだろうと確信していますが、それもまだ分かりませんでした;)

8

私はVS2012で問題なくMonoGameを使っています。 Content.Load<T>("myContent")はまだ私のために働く。あなたの資産をチェックする必要があるということは、ソリューションエクスプローラの[出力ディレクトリにコピー]に設定されているか、ゲームがビルドされると、資産はそれに伴われません。そのため、あなたはそのエラーを受け取ります - それはそこにないものを読み込むことはできません!あなたの資産を右クリックし、プロパティの下を見てください。 「コピーしない」に設定されている場合は、それを変更する必要があります。

+0

Windows用に開発しても、他のプラットフォーム(Android、IOS、Win8など)ではうまくいきませんでした。 – nathanchere

+1

私が聞く必要があったのは、「ヒント:睡眠不足時にコード化しないでください」でした。 ^ありがとう! – BjarkeCK

0

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

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

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

私のプロジェクトにはContentフォルダがあり、ビルドアクションは正しく設定されています(コンテンツ)... 'Copy always'が選択されていますが、コピー中にContentフォルダがDebugフォルダにコピーされるMonoGameがそれを見つけることができない場合、\ AppXフォルダをデバッグする。 (私は多分正確なパスと間違って私が仕事で、現在ですので、問題は私の自宅のPCである)

多分それは2012年

は、この情報がお役に立てば幸い私のVisual Studioで、単にいくつかの設定の問題です。

1

解決済みかどうかは分かりませんが、私が行ったことは同じです。

"コンテンツ"フォルダの下にあるモノゴムコンテンツパイプラインをクリックします。

あなたのスプライトフォントまたはテクスチャを追加してください。

あなたは、単にコンテンツをロードするときに、次に「コピー」に「ビルド」から

をアクションを変更Monogameコンテンツパイプラインで確認してください。 texture = content.Load( "texture.png");

希望するもの:

関連する問題