【问题标题】:How to load Pixmap/Texture into AssetManager?如何将像素图/纹理加载到 AssetManager?
【发布时间】:2018-02-16 09:39:45
【问题描述】:

我看过这些文章: https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/assets/AssetManager.html http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/assets/loaders/PixmapLoader.html http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/assets/loaders/TextureLoader.html https://github.com/libgdx/libgdx/wiki/Managing-your-assets

我仍然没有找到任何关于如何将纹理加载到 AssetManager 中的信息。 在我的游戏中,我创建了一个 Pixmap 并将其包裹在一个 Texture 周围。然后我处理 Pixmap。然后我用 SpriteBatch 绘制 纹理。在我的游戏中创建的每个纹理都是由像素图创建的,因此它是在运行时创建的。如何将这些纹理加载到 AssetManager 中?

上面的链接和我遇到的所有内容都只显示了如何从现有文件中加载纹理。

【问题讨论】:

  • 查看 AssetManager 文档。那里都覆盖了
  • 您不需要加载这些资产,因为您在运行时创建它们并且已经加载。那么为什么需要使用资产管理器呢?
  • @LunarWatcher 如上所述,我已经阅读了所有可用的文档或在谷歌上搜索了几个小时。实际上,我需要的示例还不够好。
  • @dfour 防止再次加载。 AssetManager 有助于防止占用内存两次或更多。
  • @LunarWatcher 你肯定不明白,甚至没有读过我上面的问题。因为使用 load() 是从已经可用的文件中加载!但是我的纹理等是在运行时(!)期间制作的,这是非常不同的。我花了几个小时阅读,没有描述如何从运行时加载资源!您可以通过解释我应该做什么来帮助我,而不是告诉我我没有读好或对我的问题投反对票(如果您知道得更好,但我对此表示怀疑)。你太粗鲁了

标签: java android libgdx asset-management


【解决方案1】:

来自您的评论

AssetManager 有助于防止占用内存两次或更多次。

您可能不需要使用资产管理器来防止这种情况发生。相反,您可以在代码中添加一个条件来检查资产是否已加载,例如

if(myTexture != null){
    // not loaded
    pmap = new Pixmap(10, 10,Format.RGBA8888);
    pmap.setColor(Color.RED);
    pmap.fill();
    myTexture = new Texture(pmap);
    pmap.dispose()
}else{
    // already loaded, do nothing (or add to count of times used)
}

如果您仍想使用资产管理器,您有几个选择。

  1. 您可以将当前纹理/像素图图像保存到实际文件中,然后使用资产管理器正常加载它们。 (最简单的选择)
  2. 扩展AssetManager (code) 并添加您自己的方法以将您的资产添加到资产objectMap 和assetTypes objectMap。

【讨论】:

  • 解决方案 2 对我来说听起来不错。我想使用assetManager,因为我可以通过在屏幕之间切换来传递它。条件循环不会那么好,因为我必须对游戏中可用的每个资源都这样做。我将尝试解决方案 2,直到它起作用,我会检查您的答案作为解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-15
  • 2020-10-29
  • 2018-07-30
  • 1970-01-01
  • 1970-01-01
  • 2020-05-06
  • 1970-01-01
相关资源
最近更新 更多