java - 应该如何使用 LibGDX dispose() 方法?

标签 java libgdx

我非常不清楚 LibGDX 框架中的 dispose() 方法如何工作以及应该如何使用。据我了解,当你不需要某个资源后,你必须配置以确保你的程序运行最佳。

我正在开发一个移动应用程序,我有一个 AssetManager 可以在启动时在一个特殊指定的加载屏幕中加载所有必需的 Assets 。问题是我不知道何时或是否应该卸载或处理它们。

当我开始开发该应用程序时,我并没有让管理器在开始时加载所有 Assets ,而且每次加载 Screen 的所有 Assets 花费的时间太长它被访问了。

最佳答案

可以看到dispose() LibGDX API 的一些类/接口(interface)中的方法

  • dispose() ApplicationListener的方法|接口(interface),当然还有他实现的类内部 ApplicationAdapter , Game

    dispose() ApplicationListener的方法|是生命周期方法,在应用程序被销毁时调用。您在 create() 中创建的任何一次性资源方法应该在这个方法中销毁。

  • dispose() Screen的方法|接口(interface)和他的适配器类 ScreenAdapter

    如果你想要一些特定的资源 Screen然后在 show() 中创建该资源方法并在此 dispose() 中销毁方法但屏幕的 dispose()未被 ApplicationListener 调用生命周期方法所以需要自己调用。我更喜欢调用dispose()方法 hide() Screen接口(interface)的方法。

  • dispose() LibGDX API 的许多类(如 SpriteBatchStageAssetManager 等等)的方法。

    在第 1st 和第 2nd 点中,我使用术语 disposable resource .我怎么知道哪个是一次性元素。在 libGDX 中有接口(interface) Disposable , LibGDX类使用这个接口(interface)来释放一些对象获得的资源。

  • dispose() Disposable的方法|界面

    任何实现 Disposable 的类接口(interface)需要处理。

这都是关于 dispose() 的方法。


  1. 如果您正在创建需要大量资源的大型游戏,那么将所有资源都保存在内存中并不可取,因此您需要卸载一些不使用的资源。

    假设我们正在创建具有两个游戏玩法的游戏,一个是 gardening一种是 3 match game 的类型,两种游戏都需要大量资源,因此当我们从一种游戏转移到另一种游戏时,从 AssetManager 卸载以前的游戏资源并将新游戏资源加载到 AssetManager 中.

    你应该只保留 AssetManager 的一个对象在您的应用程序中,必须在 ApplicationListener 中处理的 dispose()方法。

  2. 如果您正在开发小型项目/游戏,您可以避免加载和卸载资源,创建 AssetManager 的对象曾经在 create()方法,加载所需资源并在整个游戏中使用,dispose()当您通过 dispose() 退出游戏时ApplicationListener的方法| .

关于java - 应该如何使用 LibGDX dispose() 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44594316/

相关文章:

android - 如何将LibGdx组actor转换为Android位图

java - 使用 libgdx 在 Android 应用程序中加载图像

java - 在 LibGDX 中缩放位图字体

java - 泛型的 .class 语法中断

Java parallelStream() 和 reduce() 没有提高性能

java - 如何在 POI 中使用 DOCX 中的预定义格式?

java - Libgdx firebase robovm 绑定(bind)

java - 如何从 Blank Constructor 绘制 LibGDX Sprite

java - 如何手动测试编译好的GWT项目?

java - 创建多值索引