【发布时间】:2016-11-01 07:59:13
【问题描述】:
我正在使用 LibGDX 在 Eclipse 上创建一个 Android 游戏。我创建了一个 Image 类的实例。我不确定我是否应该处理它。我是这样创建的;
img = new Image(new Texture("img.png"));
我也创建了一个纹理,但我找不到处理它的方法。我该怎么办?
【问题讨论】:
标签: image libgdx textures dispose
我正在使用 LibGDX 在 Eclipse 上创建一个 Android 游戏。我创建了一个 Image 类的实例。我不确定我是否应该处理它。我是这样创建的;
img = new Image(new Texture("img.png"));
我也创建了一个纹理,但我找不到处理它的方法。我该怎么办?
【问题讨论】:
标签: image libgdx textures dispose
将您对一次性资产的唯一引用存储在游戏对象图中的一部分非常容易出错。使用 AssetManager,或者至少使用一个跟踪所有纹理和声音等的类(但说真的,使用 AssetManager——它具有内置的引用计数)。然后只有那个类必须处理所有 Disposables 的处理。你的actor可以有一个纹理的引用,但它不应该是唯一的引用,也不应该负责处理资产。
assetManager.load("img.png", Texture.class);
assetManager.finishLoading();
img = new Image(assetManager.get("img.png", Texture.class));
//...
assetManager.dispose();
【讨论】:
好吧,看起来 Texture 实现了 disposeable ,所以这将是需要被释放的原生对象。你可以通读this documentation.
您创建了一个带有匿名纹理的图像,这意味着您没有可以引用它的名称,因此您无法处理它。您的纹理资源需要在代码中的某处引用,以便您可以在适当的时间处理它。通常我会有一个静态资产类,它在需要时(停止应用程序时)处理所有资产。像 Image 这样的类使用这些资产,但他们不必担心处置它们。希望对您有所帮助。
【讨论】:
img 成为演员,以便我可以将其添加到我的舞台。为了不用担心处理纹理,我可以使用哪个类?
AssetManager。它处理加载和处理,使其更易于管理