我非常不清楚 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 的许多类(如SpriteBatch
、Stage
、AssetManager
等等)的方法。在第 1st 和第 2nd 点中,我使用术语
disposable resource
.我怎么知道哪个是一次性元素。在 libGDX 中有接口(interface)Disposable
, LibGDX类使用这个接口(interface)来释放一些对象获得的资源。dispose()
Disposable
的方法|界面任何实现
Disposable
的类接口(interface)需要处理。
这都是关于 dispose()
的方法。
如果您正在创建需要大量资源的大型游戏,那么将所有资源都保存在内存中并不可取,因此您需要卸载一些不使用的资源。
假设我们正在创建具有两个游戏玩法的游戏,一个是
gardening
一种是3 match game
的类型,两种游戏都需要大量资源,因此当我们从一种游戏转移到另一种游戏时,从 AssetManager 卸载以前的游戏资源并将新游戏资源加载到AssetManager
中.你应该只保留
AssetManager
的一个对象在您的应用程序中,必须在ApplicationListener
中处理的dispose()
方法。如果您正在开发小型项目/游戏,您可以避免加载和卸载资源,创建
AssetManager
的对象曾经在create()
方法,加载所需资源并在整个游戏中使用,dispose()
当您通过dispose()
退出游戏时ApplicationListener
的方法| .
关于java - 应该如何使用 LibGDX dispose() 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44594316/