monogame内容加载文件未找到异常

时间:2013-05-26 01:14:30

标签: c# android mono xamarin monogame

以下post看起来与我的问题相似,但最终它看起来并不完全相同,所以我要求它来防止声称它的相同。

我正在关注Xamarin Studio中的monogame tutorial(目前在第2步):

当我在步骤2结束时运行生成的单一游戏应用程序时,当我点击试图加载播放器内容的代码行时,我得到以下异常(粘贴在最后)。我已正确设置播放器内容文件AFAIK,将其复制到输出文件夹,但我假设它以某种方式未正确部署到 Andriod虚拟机(AVM),我无法将其弄清楚如何检查部署的内容。我拉起Android Monitor来探索AVM并试图弄清楚它的位置,但是我还没有找到任何运气......找不到文件似乎很明显,运行的是什么在AVM上找不到内容文件......但是我无法弄清楚如何纠正它。

任何帮助将不胜感激,谢谢!

我遇到此问题的来源和项目是here

我看到的例外情况如下: [MonoDroid] UNHANDLED EXCEPTION:Microsoft.Xna.Framework.Content.ContentLoadException:无法将Graphics \ player资源加载为非内容文件! ---> Microsoft.Xna.Framework.Content.ContentLoadException:打开流错误。 ---> Java.IO.FileNotFoundException:类型' Java.IO.FileNotFoundException'的异常。被扔了。 [MonoDroid]在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 assetName)[0x00000] in:0 [MonoDroid] ---托管异常堆栈跟踪结束--- [MonoDroid] java.io.FileNotFoundException:android.content.res中的Content / Graphics / player.xnb [MonoDroid] .AssetManager.openAsset(Native Method)[MonoDroid]在android.content.res.AssetManager.open(AssetManager.java:315)[MonoDroid]在android.content.res.AssetManager.open(AssetManager.java:289)[MonoDroid ]在mono.java.lang.RunnableImplementor.n_run(本机方法)[MonoDroid]在mono.java.lang.RunnableImplementor.run(RunnableImplementor.java:29)[MonoDroid]在android.os.Handler.handleCallba ck(Handler.java:605)[MonoDroid]在android.os.Handler.dispatchMessage(Handler.java:92)[MonoDroid]在android.os.Looper.loop(Looper.java:137)[MonoDroid]。 app.ActivityThread.main(ActivityThread.java:4424)[MonoDroid] at java.lang.reflect.Method.invokeNative(Native Method)[MonoDroid] at java.lang.reflect.Method.invoke(Method.java:511)[ MonoDroid]在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:784)[MonoDroid] at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)[MonoDroid] at dalvik .system.NativeStart.main(Native Method)[MonoDroid] [MonoDroid] ---内部异常堆栈跟踪结束--- Microsoft.Xna.Framework.Content.ContentManager.OpenStream(System.String assetName)[MonoDroid] [ 0x00000] in:0 [MonoDroid] at Microsoft.Xna.Framework.Content.ContentManager.ReadAsset [Texture2D](System.String assetName,System.Action1 recordDisposableObject)[0x00000] in:0 [MonoDroid] ---内部异常堆栈跟踪结束--- [MonoDroid]在Microsoft.Xna.Framework.Content.ContentManager.ReadAsset(string,System.Action1)< 0x0042c> [MonoDroid] at Microsoft.Xna.Framework.Content.ContentManager.Load(string)< 0x000c3> SampleShooter.Game1.LoadContent()< 0x0018b>上的[MonoDroid] Microsoft.Xna.Framework.Game.Initialize()< 0x0023f>中的[MonoDroid] SampleShooter.Game1.Initialize()< 0x00037>上的[MonoDroid] Microsoft.Xna.Framework.Game.DoInitialize()< 0x00037>中的[MonoDroid] [MonoDroid]在Microsoft.Xna.Framework.AndroidGamePlatform.BeforeUpdate(Microsoft.Xna.Framework.GameTime)< 0x0002b> Microsoft.Xna.Framework.Game.DoUpdate(Microsoft.Xna.Framework.GameTime)< 0x0002f>中的[MonoDroid] [MonoDroid]在Microsoft.Xna.Framework.Game.Tick()< 0x00493> Microsoft.Xna.Framework.AndroidGameWindow.OnUpdateFrame(OpenTK.FrameEventArgs)< 0x000a7>中的[MonoDroid] [MonoDroid]在OpenTK.Platform.Android.AndroidGameView.UpdateFrameInternal(OpenTK.FrameEventArgs)< 0x00033> [MonoDroid]在OpenTK.Platform.Android.AndroidGameView.RunIteration(System.Threading.CancellationToken)< 0x001c3> [MonoDroid]在OpenTK.Platform.Android.AndroidGameView / c__AnonStorey0。<> m__2(对象)< 0x00027> [MonoDroid]在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] Unhandled Exception:[mono] Microsoft.Xna.Framework.Content.ContentLoadException:无法将Graphics \ player资源加载为非内容文件! ---> Microsoft.Xna.Framework.Content.ContentLoadException:打开流错误。 ---> Java.IO.FileNotFoundException:类型' Java.IO.FileNotFoundException'的异常。被扔了。 [mono] at Android.Runtime.JNIEnv.CallObjectMethod(IntPtr jobject,IntPtr jmethod,Android.Runtime.JValue [] parms)[0x00000] in:0 [mono] at 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 assetName)[0x00000] in:0 [mono] ---托管异常堆栈跟踪结束--- [mono] java.io.FileNotFoundException:android.content.res中的Content / Graphics / player.xnb [mono] .AssetManager.openAsset(Native Method)[mono] at android.content.res.AssetManager.open(AssetManager.ja [mono] [ERROR] FATAL UNHANDLED EXCEPTION:Microsoft.Xna.Framework.Content.ContentLoadException:无法加载Graphics \播放器资产作为非内容文件!---> Microsoft.Xna.Framework.Content.ContentLoadException:打开流错误.---> Java.IO.FileNotFoundException:类型' Java.IO的异常。 FileNotFoundE xception'被扔了。 [mono] at Android.Runtime.JNIEnv.CallObjectMethod(IntPtr jobject,IntPtr jmethod,Android.Runtime.JValue [] parms)[0x00000] in:0 [mono] at 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 assetName)[0x00000] in:0 [mono] ---托管异常堆栈跟踪结束--- [mono] java.io.FileNotFoundException:android.content.res中的Content / Graphics / player.xnb [mono] .AssetManager.openAsset(Native Method)[mono] at android.content.res.AssetManager.open(as

2 个答案:

答案 0 :(得分:9)

所以我终于弄清楚我需要将XNB文件标记为构建操作的AndroidAsset,而不是像示例所述的内容。由于我所遵循的示例针对Windows Mobile开发,因此该文件通常会被标记为Windows应用程序的内容,而对于Android,这些文件需要标记为AndriodAsset,以便XNA能够访问原始内容数据,无论文件是在内容还是资产文件夹中。默认情况下,内容管理器的根文件夹是“内容”,因此您需要在此处添加文件并将其标记为资产,而不是内容......

答案 1 :(得分:2)

android monogame项目的内容应作为内置的.xnb文件添加到Assets / Content文件夹中的项目中,而不是仅复制到输出目录