在libgdx中,screen.setScreen()
不会自动调用dispose。在重写的setScreen中,我是否必须先调用screen.dispose
然后再调用super.setScreen
或先调用后者?
我知道这似乎是重复的问题,但我仍然想知道,因为super.setScreen
调用screen.hide
。在hide
运行时安全之后调用dispose
?
这是一种不好的做法吗?
我正在根据this和this示例制作3D游戏。
在这里,我将GameName
类扩展为Game
并尝试覆盖setScreen
,以便在屏幕不为空时调用dispose,然后调用super.setScreen
。
答案 0 :(得分:1)
screen.dispose()
。在将引用放到屏幕上之前,您必须自己手动完成。如果您不打算重复使用屏幕实例,请screen.hide()
调用screen.dispose()
是完美的选择。
screen.hide()
来响应Android事件。
除非您确定永远不想重复使用任何屏幕实例,否则我建议不要覆盖game.setScreen()
处理屏幕。在大多数简单的游戏中,您确实希望重复使用它们,而不是浪费时间重复卸载和重新加载资源。
答案 1 :(得分:0)
两种类型的可支配资产(SpriteBatch,Texture,Stage,...),一个在不同的屏幕上共享,另一个特定于特定屏幕。
共享资产应该通过Game的dispose()
方法处理。
屏幕特定资产应通过屏幕的dispose()
方法处理,但屏幕的dispose()从未调用过,因此您需要明确调用它。
当您更改屏幕hide()
屏幕方法时,您应该从dispose()
方法调用hide()
方法。