【发布时间】:2014-12-03 04:15:55
【问题描述】:
我正在使用 libGdx 编写类似 Pong 的游戏。 在 GameScreen 中,我想显示每个玩家的剩余生命。 为此,在 GameScreen 的 create() 中,我有一个包含多个 ImageButtons 的表:
for(int i = 0; i < lifePlayer1; i++){
lives[i] = new ImageButton(skin, "Life");
lifeTable.add(lives[i]);
lives[i].setVisible(true);
lives[i].setTouchable(Touchable.disabled);
}
每个 ImageButton 代表一个生命。当玩家失去生命时,失去生命对应的ImageButton被setChecked,imageChecked代表失去的生命
在游戏开始之前,我想显示一条消息“游戏开始!”。消息从左到右穿过屏幕,只有在消息消失后游戏才开始。
我遇到的问题是lifeTable的实例化需要时间,而GameScreen在实例化完成之前就开始运行了。我解释一下:
- 当我禁用 lifeTable 时,一切运行顺利,“游戏开始!”消息从左到右穿过屏幕,游戏开始。
- 当我启用 lifeTable 时,当我按下 MainMenueScreen 中的“新游戏”按钮时,会出现延迟(比如说 0.5 秒),就像加载时间一样,当最终显示 GameScreen 时,“游戏开始!”消息几乎已经穿过屏幕了。
- 我有一个 2 人模式,要加载 2 个生命表,更糟糕的是,当 GameScreen 在 2 人模式下显示“游戏开始!”消息已经完成穿过屏幕,游戏已经开始。
我正在使用 AssetManager,并且游戏中使用的每个纹理在到达 MainMenuScreen 之前都已加载。 AssetManager 有助于减少 GameScreen 的加载时间,但仍不能令人满意。
有什么东西可以预加载 lifeTable,就像我们用 AssetManager 预加载纹理一样? 或者,有没有办法让 GameScreen 的 render() 仅在 create() 完成所有对象的实例化时才开始?
感谢您的帮助。
【问题讨论】:
标签: performance libgdx load