【问题标题】:LibGdx - Load skin from assetmanagerLibGdx - 从资产管理器加载皮肤
【发布时间】:2016-09-12 19:49:02
【问题描述】:

所以我可以像这样在我的资产管理器中加载皮肤:

manager.load(skinAtlas, TextureAtlas.class);
manager.load(menuSkin, Skin.class, new SkinLoader.SkinParameter(skinAtlas));

但是如果我想在运行时添加 .ttf 字体,我该怎么做呢?即:

skin = new Skin();
skin.add("smallFont", smallFontT, BitmapFont.class);
skin.load(assetManager.getManager().get(assetManager.menuSkin, Skin.class)); //this does not work

【问题讨论】:

    标签: libgdx


    【解决方案1】:

    如果您的 Json 样式不依赖于该特定字体,您可以在加载皮肤后从资产管理器获取皮肤对象引用后随时将其添加到现有皮肤中。使用skin.add("smallFont", smallFontT) 将您的字体添加到现有皮肤中。

    您还可以在 JSON 文件之前指定要添加到皮肤的其他对象,以便 JSON 文件可以依赖它们。但是要使用 AssetManager 执行此操作,必须在 AssetManager 将 JSON 文件加载到皮肤之前加载这些资产。

    因此,您可以首先在没有 AssetManager 的情况下直接加载这些资产,或者您可以使用 AssetManager 加载它们(在将皮肤添加到管理器之前,将它们添加到管理器和管理器上的 finishLoading)。无论哪种方式,您都需要获取对 JSON 需要引用的每个资产的引用。

    然后将它们放入 ObjectMap 中。例如:

    ObjectMap<String, Object> resources = new ObjectMap<String, Object>();
    resources.put("smallFont", smallFontT); //assuming smallFontT is a reference to a BitmapFont object
    

    那么这些资源就可以放到你的SkinParameter里面了:

    manager.load(skinAtlas, TextureAtlas.class); //I'm assuming skinAtlas is a String path to your atlas
    manager.load(menuSkin, Skin.class, new SkinLoader.SkinParameter(skinAtlas, resources));
    

    现在您的 JSON 中的样式可以引用名为“smallFont”的字体。

    【讨论】:

    猜你喜欢
    • 2017-09-09
    • 1970-01-01
    • 2017-04-27
    • 1970-01-01
    • 1970-01-01
    • 2015-02-03
    • 2018-07-23
    • 2016-09-14
    相关资源
    最近更新 更多