我很不清楚dispose()LibGDX 框架中的方法是如何工作的,应该如何使用。据我所知,在您不需要某种资源后,您必须进行处置以确保您的程序运行最佳。
我正在开发一个移动应用程序,我有一个AssetManager在启动时加载所有必需资产的特殊指定加载屏幕。问题是我不知道何时或是否应该卸载或处理它们。
当我开始开发应用程序时,我没有让管理器在开始时加载所有资产,而且Screen每次访问程序时都需要很长时间来加载它的所有资产。
dispose()您可以在 LibGDX API 的一些类/接口中看到方法
dispose()接口的方法ApplicationListener,当然还有他实现的类中的方法ApplicationAdapter,Game
dispose()的方法ApplicationListener是生命周期方法,在应用程序被销毁时调用。您在方法中创建的任何一次性资源create()都应在此方法中销毁。
dispose()Interface的方法Screen及其适配器类ScreenAdapter
如果您想要一些特定的资源Screen,则在方法中创建该资源show()并在此方法中销毁dispose(),但 Screendispose()不会由生命周期方法调用ApplicationListener,因此您需要自己调用。我更喜欢通过Screen 接口的方法来调用dispose()方法。hide()
dispose()LibGDX API的许多类(如SpriteBatch、等)的方法。StageAssetManager
在第一点和第二点中,我使用了一个术语disposable resource。我如何知道哪个是一次性物品。libGDX中有一个 Interface Disposable,LibGDX类使用该接口来释放某个对象获得的资源。
dispose()Disposable接口方法
任何实现Disposable接口的类都需要被丢弃。
这都是关于dispose()方法的。
如果您正在创建需要大量资源的大型游戏,那么将所有资源保留在内存中并不可取,因此您需要卸载一些不使用的资源。
假设我们正在创建有两个游戏的游戏,一个是gardening,一个是 type 3 match game,这两种游戏都需要大量资源,因此当我们从一种游戏转移到另一种游戏时,从 AssetManager 中卸载以前的游戏资源并加载新的游戏资源进入AssetManager。
您应该在您的应用程序中只保留一个对象AssetManager,并且必须在ApplicationListener的dispose()方法中进行处理。
如果您正在开发小型项目/游戏,您可以避免加载和卸载资源,AssetManager在方法中创建一次对象create(),加载所需的资源并在整个游戏中以及dispose()在退出游戏时dispose()通过ApplicationListener.