在libgdx中管理桌面和设备版本之间的资产

Bor*_*ris 10 android textures assets filenotfoundexception libgdx

我正在使用libgdx构建一个小小的Android游戏.现在我在桌面项目文件夹和Android项目文件夹中有一个游戏资产的副本.出于某些奇怪的原因,我必须在两个版本中的每一个中以不同方式访问这些文件.

这在桌面应用程序中工作正常,但在Android应用程序中给我一个FileNotFound异常:

Texture texture = new Texture(Gdx.files.internal("assets/someImage.png"));
Run Code Online (Sandbox Code Playgroud)

如果我从文件名中删除"资产",那么反过来(Android工作,桌面崩溃):

Texture texture = new Texture(Gdx.files.internal("someImage.png"));
Run Code Online (Sandbox Code Playgroud)

我不确定问题是什么.两个项目的文件夹结构完全相同... libgdx的正确方法是什么?

Dea*_*ano 10

您应该将所有资产存储在Android资源文件夹中,并将桌面项目链接到该文件夹​​.有关此内容的快速说明,请访问http://www.badlogicgames.com/wordpress/?p=1537

编辑:官方项目安装教程也描述了如何执行此操作.它位于http://code.google.com/p/libgdx/wiki/ProjectSetup#Asset_folder_setup

除了项目设置,我相信你的第二种方法是引用两个项目资产的正确方法.修复设置后,它应该在两种环境中都能正常工作.


Jus*_*bie 8

桌面项目的资产文件夹,也可以选择与摇篮-这行添加到build.gradledesktop文件夹:

sourceSets.main.resources.srcDirs = [ "../android/assets/" ]
Run Code Online (Sandbox Code Playgroud)

或者,如果您没有生成Android项目:

sourceSets.main.resources.srcDirs = [ "../core/assets/" ]
Run Code Online (Sandbox Code Playgroud)

这应该在运行eclipse/ ideaGradle任务时正确链接Eclipse和IntelliJ中的文件夹.与创建链接或手动将文件夹添加到源相比,我认为这是迄今为止最容易设置和管理的.

  • 这样做了.这应该是公认的答案.谢谢! (3认同)