我很不清楚LibGDX框架中的dispose()
方法是如何工作的,应该如何使用。根据我所学到的,在您不需要某种资源之后,您必须进行处理以确保您的程序运行最佳。
我正在开发一个移动应用程序,我有一个AssetManager
,可以在一个特殊的指定加载屏幕中加载启动时所需的所有资产。问题是我不知道何时或是否应该卸载或处置它们。
当我开始开发应用程序时,我没有让管理器在开始时加载所有资产,而且每次加载Screen
的所有资产时,程序都会花费太长时间被访问了。
答案 0 :(得分:2)
游戏退出时会自动调用Game.dispose()或ApplicationListener.dispose()。
在这些方法中,您可以处理您经常需要的东西,如纹理,音乐,声音或包含这些对象的assetManager。
class MainClass extends Game....
@Override
public void dispose(){ // this method is called when the game quits
texture1.dispose();
music.dispose();
assetManager.dispose();
}
然而,如果你不再需要一个物体并且是一次性的,你应该在你不再需要它时处理它,一个例子就是Pixmaps。
class MainClass extends Game....
Texture texture;
@Override
public void create(){
Pixmap pixmap = new Pixmap(width,height, Pixmap.Format.RGBA8888);
pixmap.setColor(0,0,0,0.5f);
pixmap.fill();
texture = new Texture(pixmap);
pixmap.dispose();
}
Screen
,无论什么时候不需要屏幕,都要处理它
class SplashScreen implements Screen....
public void changeScreen(){
dispose(); //dispose the current screen
setScreen(new Screen());
}
@Override
public void dispose(){ //this method doesnt get called automatically
splashTexture.dispose();
}
您可以实例化一个屏幕并将其保存在内存中并将其丢弃在Game.dispose()中
答案 1 :(得分:2)
您可以在某些类/ LibGDX API接口中看到dispose()
方法
dispose()
ApplicationListener
界面的方法,当然还包括在其已实施的课程中ApplicationAdapter
,Game
dispose()
的{{1}}方法是生命周期方法,在销毁应用程序时调用。您在ApplicationListener
方法中创建的任何可支配资源都应在此方法中销毁。 create()
dispose()
接口的方法及其适配器类Screen
如果您需要特定ScreenAdapter
的某些资源,请在Screen
方法中创建该资源并使用此show()
方法销毁,但不会调用屏幕dispose()
dispose()
生命周期方法,因此您需要自己调用。我更喜欢通过屏幕界面的ApplicationListener
方法调用dispose()
方法。
hide()
,dispose()
,SpriteBatch
等等)的 Stage
方法。
在1 st 和2 nd 点中,我使用术语AssetManager
。我怎么知道哪个是一次性物品。在libGDX中有接口disposable resource
,LibGDX类使用此接口释放某些对象获取的资源。
Disposable
接口的dispose()
方法
任何实现Disposable
接口的类都需要处理。
这完全是关于Disposable
方法。
如果您正在创建需要大量资源的大型游戏,那么保留所有内存并不是首选,因此您需要卸载一些您不使用的资源。
假设我们创建的游戏有两个游戏,一个是dispose()
,一个是gardening
,两个游戏都需要大量的资源,所以当我们从一个游戏玩到另一个游戏,从AssetManager卸载以前的游戏资源并将新的游戏资源加载到3 match game
。
您应该只在应用中保留AssetManager
的一个对象,并且必须使用AssetManager
ApplicationListener
方法处理。
如果您正在处理小型项目/游戏,则可以避免加载和卸载资源,在dispose()
方法中创建AssetManager
对象一次,加载所需资源并使用全部当你通过create()
dispose()
方法退出游戏时,你的游戏和dispose()
。