Java 通过AssetManager加载时,无法使用libgdx在IOS中加载TextureAtlas文件

Java 通过AssetManager加载时,无法使用libgdx在IOS中加载TextureAtlas文件,java,libgdx,xamarin-studio,Java,Libgdx,Xamarin Studio,我开始将LIBGDX应用程序移植到IOS。我使用libgdx的Xamarin studio端口在IOS上运行我的应用程序。我成功地进行了移植,但应用程序未能在Iphone模拟器中加载TextureAtlas文件和BitmapFont文件 我试过的代码是 ... AssetManager assetManager = new AssetManager(); assetManager.load("packer/help.txt", TextureAtlas.class);

我开始将LIBGDX应用程序移植到IOS。我使用libgdx的Xamarin studio端口在IOS上运行我的应用程序。我成功地进行了移植,但应用程序未能在Iphone模拟器中加载TextureAtlas文件和BitmapFont文件

我试过的代码是

   ...
    AssetManager assetManager = new AssetManager();
    assetManager.load("packer/help.txt", TextureAtlas.class);

    if (assetManager.update()) {

    }
    ...
上面的代码在桌面和android上运行良好,但在Iphone模拟器上运行时,我得到了以下日志

Unhandled Exception:
0   iosgame                             0x000f4f7e mono_handle_exception_internal_first_pass + 2190
1   iosgame                             0x000f69c2 mono_handle_exception_internal + 1602
2   iosgame                             0x000f750f mono_handle_exception + 47
3   iosgame                             0x0013a662 mono_x86_throw_exception + 306
4   ???                                 0x0b730f8f 0x0 + 192089999
at com.badlogic.gdx.assets.AssetManager.update () [0x0009c] in /Users/badlogic/jenkins/workspace/libgdx-mac/gdx/src//com/badlogic/gdx/assets/AssetManager.java:346
at (wrapper synchronized) com.badlogic.gdx.assets.AssetManager.update () <IL 0x00009, 0x0002c>
at com.racing.gold.Screen.SplashScreen.update (single) [0x0001f] in /Users/Vikalp/Downloads/libgdx-nightly-20130609/Generated Project/my-gdx-game/src/com/racing/gold/Screen/SplashScreen.java:80
at com.racing.gold.Game.render () [0x0000d] in /Users/Vikalp/Downloads/libgdx-nightly-20130609/Generated Project/my-gdx-game/src/com/racing/gold/Game.java:48

at (wrapper managed-to-native) MonoTouch.UIKit.UIApplication.UIApplicationMain (int,string[],intptr,intptr) <IL 0x00056, 0x000a4>
at MonoTouch.UIKit.UIApplication.Main (string[],string,string) [0x0004c] in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIApplication.cs:38
at com.ios.temp.project.Application.Main (string[]) [0x00000] in /Users/Vikalp/Downloads/libgdx-nightly-20130609/Generated Project/my-gdx-game-ios/Main.cs:33
at (wrapper runtime-invoke) <Module>.runtime_invoke_void_object (object,intptr,intptr,intptr) <IL 0x00049, 0x00077>
30  iosgame                             0x0006f462 mono_jit_runtime_invoke + 722
31  iosgame                             0x001d34de mono_runtime_invoke + 126
32  iosgame                             0x001d76d4 mono_runtime_exec_main + 420
33  iosgame                             0x001dcac5 mono_runtime_run_main + 725
34  iosgame                             0x000ccb65 mono_jit_exec + 149
35  iosgame                             0x0026b494 main + 1988
36  iosgame                             0x00068269 start + 53

2013-06-11 09:51:47.694 iosgame[567:c07] Unhandled managed exception: java.net.MalformedURLException: unknown protocol: file (com.badlogic.gdx.utils.GdxRuntimeException)
  at com.badlogic.gdx.assets.AssetManager.handleTaskError (System.Exception t) [0x000bf] in /Users/badlogic/jenkins/workspace/libgdx-mac/gdx/src//com/badlogic/gdx/assets/AssetManager.java:512 
  at com.badlogic.gdx.assets.AssetManager.update () [0x0009c] in /Users/badlogic/jenkins/workspace/libgdx-mac/gdx/src//com/badlogic/gdx/assets/AssetManager.java:346 
  at (wrapper synchronized) com.badlogic.gdx.assets.AssetManager:update ()
  at com.racing.gold.Screen.SplashScreen.update (Single deltaTime) [0x0001f] in /Users/Vikalp/Downloads/libgdx-nightly-20130609/Generated Project/my-gdx-game/src/com/racing/gold/Screen/SplashScreen.java:80 
  at com.racing.gold.Game.render () [0x0000d] in /Users/Vikalp/Downloads/libgdx-nightly-20130609/Generated Project/my-gdx-game/src/com/racing/gold/Game.java:48 
  at com.badlogic.gdx.backends.ios.IOSGraphics.OnRenderFrame (OpenTK.FrameEventArgs arg0) [0x00184] in /Users/badlogic/jenkins/workspace/libgdx-mac/backends/gdx-backend-iosmonotouch/src//com/badlogic/gdx/backends/ios/IOSGraphics.java:185 
  at OpenTK.Platform.iPhoneOS.iPhoneOSGameView.RunIteration () [0x000c1] in /Developer/MonoTouch/Source/monotouch/src/OpenGLES/OpenTK_1.0/Platform/iPhoneOS/iPhoneOSGameView.cs:830 
  at OpenTK.Platform.iPhoneOS.CADisplayLinkTimeSource.RunIteration () [0x00000] in /Developer/MonoTouch/Source/monotouch/src/OpenGLES/OpenTK_1.0/Platform/iPhoneOS/iPhoneOSGameView.cs:158 
  at (wrapper managed-to-native) MonoTouch.UIKit.UIApplication:UIApplicationMain (int,string[],intptr,intptr)
  at MonoTouch.UIKit.UIApplication.Main (System.String[] args, System.String principalClassName, System.String delegateClassName) [0x0004c] in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIApplication.cs:38 
  at com.ios.temp.project.Application.Main (System.String[] args) [0x00000] in /Users/Vikalp/Downloads/libgdx-nightly-20130609/Generated Project/my-gdx-game-ios/Main.cs:33 
未处理的异常:
0 iosgame 0x000f4f7e单声道句柄异常内部首次通过+2190
1 iosgame 0x000f69c2单声道句柄异常内部+1602
2 iosgame 0x000f750f单声道句柄异常+47
3 iosgame 0x0013a662单声道x86单声道抛出异常+306
4.0x0b730f8f 0x0+192089999
在/Users/badlogic/jenkins/workspace/libgdx mac/gdx/src//com/badlogic/gdx/assets/AssetManager.java:346中的com.badlogic.gdx.assets.AssetManager.update()[0x0009c]
位于(包装器已同步)com.badlogic.gdx.assets.AssetManager.update()
在com.racing.gold.Screen.SplashScreen.update(single)[0x0001f]in/Users/Vikalp/Downloads/libgdx-nightly-20130609/Generated Project/my-gdx game/src/com/racing/gold/Screen/SplashScreen.java:80
在com.racing.gold.Game.render()[0x0000d]in/Users/Vikalp/Downloads/libgdx-nightly-20130609/Generated Project/my-gdx-Game/src/com/racing/gold/Game.java:48
at(包装器管理为本机)MonoTouch.UIKit.UIApplication.UIApplicationMain(int,string[],intptr,intptr)
位于/Developer/MonoTouch/Source/MonoTouch/src/UIKit/UIApplication.cs:38中的MonoTouch.UIKit.UIApplication.Main(字符串[],字符串,字符串)[0x0004c]
在/Users/Vikalp/Downloads/libgdx-nightly-20130609/Generated project/my-gdx game-ios/Main.cs:33中的com.ios.temp.project.Application.Main(字符串[])[0x00000]
在(包装器运行时调用)。运行时调用无效对象(对象,intptr,intptr,intptr)
30 iosgame 0x0006f462单声道实时运行时调用+722
31 iosgame 0x001d34de单声道运行时调用+126
32 iosgame 0x001d76d4单声道运行时执行主+420
33 iosgame 0x001dcac5单声道运行时运行主+725
34 iosgame 0x000ccb65 mono_jit_exec+149
35 iosgame 0x0026b494 main+1988
36游戏0x00068269开始+53
2013-06-11 09:51:47.694 iosgame[567:c07]未处理的托管异常:java.net.MalformedURLException:未知协议:文件(com.badlogic.gdx.utils.GdxRuntimeException)
位于/Users/badlogic/jenkins/workspace/libgdx mac/gdx/src//com/badlogic/gdx/assets/AssetManager.handletaskeror(System.Exception t)[0x000bf]中
在/Users/badlogic/jenkins/workspace/libgdx mac/gdx/src//com/badlogic/gdx/assets/AssetManager.java:346中的com.badlogic.gdx.assets.AssetManager.update()[0x0009c]
位于(wrapper synchronized)com.badlogic.gdx.assets.AssetManager:update()
在/Users/Vikalp/Downloads/libgdx-nightly-20130609/Generated Project/my-gdx game/src/com/racing/gold/Screen/SplashScreen.java:80中的com.racing.gold.Screen.SplashScreen.update(Single deltaTime)[0x0001f]
在com.racing.gold.Game.render()[0x0000d]in/Users/Vikalp/Downloads/libgdx-nightly-20130609/Generated Project/my-gdx-Game/src/com/racing/gold/Game.java:48
在/Users/badlogic/jenkins/workspace/libgdx-mac/backends/gdx-backend-backend-iosmontouch/src//com/badlogic/gdx/backends/ios/IOSGraphics.java:185中的com.badlogic.gdx.backends.IOSGraphics.OnRenderFrame(OpenTK.FrameEventArgs args arg0)[0x00184]中
在/Developer/MonoTouch/Source/MonoTouch/src/OpenGLES/OpenTK_1.0/Platform/iPhoneOS/iPhoneOSGameView.cs:830中的OpenTK.Platform.iPhoneOS.iPhoneOSGameView.RunIteration()[0x000c1]
在/Developer/MonoTouch/Source/MonoTouch/src/OpenGLES/OpenTK_1.0/Platform/iPhoneOS/iPhoneOSGameView.cs:158中的OpenTK.playlinktimesource.RunIteration()[0x00000]
at(包装器管理为本机)MonoTouch.UIKit.UIApplication:UIApplicationMain(int,string[],intptr,intptr)
在/Developer/MonoTouch/Source/MonoTouch/src/UIKit/UIApplication.Main中的MonoTouch.UIKit.UIApplication.Main(System.String[]args,System.String principalClassName,System.String delegateClassName)[0x0004c]
在com.ios.temp.project.Application.Main(System.String[]args)[0x00000]in/Users/Vikalp/Downloads/libgdx-nightly-20130609/Generated project/my gdx game ios/Main.cs:33
我尝试将我的包扩展名从.txt更改为.pack,但得到了相同的输出

我无法在Libgdx论坛上找到解决方案。请告诉我这个问题。

根据Badlogic论坛的报道,有两件事可能是错误的:

  • 您使用的是
    java.net
    api(可能不是您的情况)
  • 您正在使用
    Gdx.files.classpath
    加载一些文件
  • 您没有完全/正确地将资产打包到构建中
仔细阅读本手册中的注意事项,确保您已正确设置了所有内容

这个(类似的)问题: 已解析,因为PNG文件未正确优化。请参阅“PNG优化”部分(并特别注意您正在使用的Libgdx版本,因为它的行为似乎已经改变)。

嘿,我发现了这个问题


当我们从Xamarin Studio运行应用程序时,它不会打包所有项目。它会留下一些文件,如文本文件、XML等。我们需要将它们标记为包含在应用程序中将所有这些文件标记为要添加为捆绑资源。

相关:根据上述相关链接。我已检查了所有设置步骤。当我直接加载纹理,然后使用它们来查找纹理区域时,它工作得很好,在模拟器上运行,但像这样创建它们是非常乏味的。我在工作时遇到了问题