6

次の投稿は私の問題に似ていますが、最終的にはすべての詳細がまったく同じに見えないため、同じであるという主張を防ぐためにそれを呼びかけています.

Xamarin Studio でこのモノゲーム チュートリアル(現在はステップ 2) に従っています。

手順 2 の最後に結果の monogame アプリを実行すると、プレーヤー コンテンツをロードしようとするコード行にヒットすると、次の例外 (最後に貼り付けられます) が発生します。私の知る限り、プレーヤーコンテンツファイルは正しくセットアップされており、出力フォルダーにコピーされていますが、何らかの形でAndriod Virtual Machine (AVM)に正しくデプロイされていないと想定しています。コンテンツ。Android モニターを起動して AVM を探索し、どこにあるかを調べようとしましたが、それを理解する運がありませんでした...ファイルが見つからないという例外は、AVM で実行されているものがそうではないことを明確にしているようですコンテンツファイルを見つけています...しかし、それを修正する方法がわかりません。

どんな助けでも大歓迎です、ありがとう!

この問題が発生しているソースとプロジェクトはこちら

私が見ている例外は次のとおりです。 [MonoDroid] 未処理の例外: Microsoft.Xna.Framework.Content.ContentLoadException: Graphics\player アセットを非コンテンツ ファイルとして読み込めませんでした! ---> Microsoft.Xna.Framework.Content.ContentLoadException: ストリームを開くときにエラーが発生しました。---> Java.IO.FileNotFoundException: タイプ「Java.IO.FileNotFoundException」の例外がスローされました。[MonoDroid] at Android.Runtime.JNIEnv.CallObjectMethod (IntPtr jobject, IntPtr jmethod, Android.Runtime.JValue[] parms) [0x00000] in :0 [MonoDroid] at Android.Content.Res.AssetManager.Open (System.String fileName) [0x00000] in :0 [MonoDroid] at Microsoft.Xna.Framework.TitleContainer.OpenStream (System.String name) [0x00000] in :0 [MonoDroid] at Microsoft.Xna.Framework.Content.ContentManager.OpenStream (System.String) .String assetName) [0x00000] in : Platform.Android.AndroidGameView.RunIteration (System.Threading.CancellationToken) <0x001c3> [MonoDroid] at OpenTK.Platform.Android.AndroidGameView/c__AnonStorey0.<>m__2 (オブジェクト) <0x00027> [MonoDroid] at Android.App.SyncContext/ c__AnonStorey2F.<>m__1A () <0x00023> [MonoDroid] at Java.Lang.Thread/RunnableImplementor.Run () <0x0003f> [MonoDroid] at Java.Lang.IRunnableInvoker.n_Run (intptr,intptr) <0x00037> [MonoDroid] at (wrapper dynamic-method) object.e85befee-f4e0-4f15-9232-77621081c7b5 (intptr,intptr) <0x0003b> [mono] [mono] 未処理の例外: [mono] Microsoft.Xna.Framework.Content.ContentLoadException: できませんでしたGraphics\player アセットをコンテンツ以外のファイルとしてロードしてください! ---> Microsoft.Xna.Framework.Content.ContentLoadException: ストリームを開くときにエラーが発生しました。---> Java.IO.FileNotFoundException: タイプ「Java.IO.FileNotFoundException」の例外がスローされました。[mono] Android.Runtime.JNIEnv.CallObjectMethod (IntPtr jobject、IntPtr jmethod、Android.Runtime.JValue[] parms) で [0x00000] :0 で [mono] Android.Content.Res.AssetManager.Open (System.String fileName) [0x00000] in :0 [mono] at Microsoft.Xna.Framework.TitleContainer.OpenStream (System.String name) [0x00000] in :0 [mono] at Microsoft.Xna.Framework.Content.ContentManager.OpenStream (System.String name) .String assetName) [0x00000] in :0 [mono] --- マネージド例外スタック トレースの終了 --- [mono] java.io.FileNotFoundException: Content/Graphics/player.xnb [mono] at android.content.res .AssetManager.openAsset(Native Method) [mono] at android.content.res.AssetManager.open(AssetManager.ja [mono] [エラー] FATAL UNHANDLED EXCEPTION: Microsoft.Xna.Framework.Content.ContentLoadException: Graphics\player アセットを非コンテンツ ファイルとして読み込めませんでした! ---> Microsoft.Xna.Framework.Content.ContentLoadException: ストリームを開くときにエラーが発生しました。---> Java.IO.FileNotFoundException: タイプ「Java.IO.FileNotFoundException」の例外がスローされました。[mono] Android.Runtime.JNIEnv.CallObjectMethod (IntPtr jobject、IntPtr jmethod、Android.Runtime.JValue[] parms) で [0x00000] :0 で [mono] Android.Content.Res.AssetManager.Open (System.String fileName) [0x00000] in :0 [mono] at Microsoft.Xna.Framework.TitleContainer.OpenStream (System.String name) [0x00000] in :0 [mono] at Microsoft.Xna.Framework.Content.ContentManager.OpenStream (System.String name) .String assetName) [0x00000] in :0 [mono] --- マネージド例外スタック トレースの終了 --- [mono] java.io.FileNotFoundException: Content/Graphics/player.xnb [mono] at android.content.res 。アセット・マネージャー。

4

2 に答える 2

11

そのため、XNB ファイルをビルド アクションの AndroidAsset としてマークする必要があることが最終的にわかりました。例で述べたように、Content ではありません。私がフォローしている例は Windows Mobile 開発を対象としているため、ファイルは通常 Windows アプリケーションのコンテンツとしてマークされるため、これは理にかなっていますが、Android の場合、XNA がアクセスできるようにするには、これらのファイルを AndriodAsset としてマークする必要があります。ファイルがコンテンツ フォルダーまたはアセット フォルダーにあるかどうかに関係なく、未加工のコンテンツ データ。コンテンツ マネージャーのデフォルトのルート フォルダーは「コンテンツ」であるため、そこにファイルを追加し、コンテンツではなくアセットとしてマークする必要があります...

于 2013-05-26T14:36:16.337 に答える