在LibGDX中的Screen.dispose()之后调用Screen.hide()是否安全?

时间:2017-02-22 10:52:28

标签: java android libgdx game-engine

在libgdx中,screen.setScreen()不会自动调用dispose。在重写的setScreen中,我是否必须先调用screen.dispose然后再调用super.setScreen或先调用后者? 我知道这似乎是重复的问题,但我仍然想知道,因为super.setScreen调用screen.hide。在hide运行时安全之后调用dispose? 这是一种不好的做法吗? 我正在根据thisthis示例制作3D游戏。 在这里,我将GameName类扩展为Game并尝试覆盖setScreen,以便在屏幕不为空时调用dispose,然后调用super.setScreen

2 个答案:

答案 0 :(得分:1)

LibGDX永远不会调用

screen.dispose()。在将引用放到屏幕上之前,您必须自己手动完成。如果您不打算重复使用屏幕实例,请screen.hide()调用screen.dispose()是完美的选择。

永远不会调用

screen.hide()来响应Android事件。

除非您确定永远不想重复使用任何屏幕实例,否则我建议不要覆盖game.setScreen()处理屏幕。在大多数简单的游戏中,您确实希望重复使用它们,而不是浪费时间重复卸载和重新加载资源。

答案 1 :(得分:0)

两种类型的可支配资产(SpriteBatch,Texture,Stage,...),一个在不同的屏幕上共享,另一个特定于特定屏幕。

  1. 共享资产应该通过Game的dispose()方法处理。

  2. 屏幕特定资产应通过屏幕的dispose()方法处理,但屏幕的dispose()从未调用过,因此您需要明确调用它。

  3. 当您更改屏幕hide()屏幕方法时,您应该从dispose()方法调用hide()方法。