Update:较新版本的 Libgdx 使用不同的策略来解析文件名(使用目录,而不是文件),因此此答案不适用于(0.9.2,我认为?https://github.com/libgdx/libgdx/commit/3afcfe49c40196765033a90b4610159183dde981 https://github.com/libgdx/libgdx/commit/3afcfe49c40196765033a90b4610159183dde981)
内置的ResolutionFileResolver http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/assets/loaders/resolvers/ResolutionFileResolver.html不使用目录层次结构。它使用文件后缀将屏幕分辨率与资源相匹配。
这是来自 libGDX 的代码AssetManagerTest https://github.com/libgdx/libgdx/blob/master/tests/gdx-tests/src/com/badlogic/gdx/tests/AssetManagerTest.java:
Resolution[] resolutions = { new Resolution(320, 480, ".320480"),
new Resolution(480, 800, ".480800"),
new Resolution(480, 856, ".480854") };
ResolutionFileResolver resolver = new ResolutionFileResolver(new InternalFileHandleResolver(), resolutions);
AssetManager manager = new AssetManager();
manager.setLoader(Texture.class, new TextureLoader(resolver));
...
解析器根据当前屏幕分辨率附加这些后缀之一。因此,例如,如果您在 480x800 设备上查找“foo.jpg”,则会打开文件“foo.jpg.480800”。
如果您想根据目录解析文件(因此“foo.jpg”将解析为“480x800/foo.jpg”或类似的内容),您可以编写一个新的解析器。只需实施FileHandleResolver http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/assets/loaders/FileHandleResolver.html. The 解析文件解析器.java https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/assets/loaders/resolvers/ResolutionFileResolver.java来源可能是一个很好的起点。