我目前正在练习和编写一个简单的菜单,只需按一下按钮即可切换到主游戏。
使用libGDX用于创建3D环境的所有功能,主游戏采用3D模式。菜单使用Stage构建。我分别构建了Menu和Render / FirstPerson类,以确保它们能够独立工作,并且确实完成了它们。
package com.mygdx.game;
import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.mygdx.game.FPSSystem;
import com.mygdx.game.RenderingSystem;
public class MainCoreLoop extends ApplicationAdapter {
public MenuSystem menuSystem;
public RenderingSystem renderingSystem;
public FPSSystem fpsSystem;
public boolean isGameOn;
@Override
public void create () {
renderingSystem = new RenderingSystem();
fpsSystem = new FPSSystem();
menuSystem = new MenuSystem();
renderingSystem.create();
fpsSystem.create();
menuSystem.create();
}
@Override
public void render () {
isGameOn = true;
if (MenuSystem.isMenuClosed == true) {
isGameOn = true;
}
else if(isGameOn == false) {
Gdx.gl.glClearColor(0, 255, 0, 0);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
menuSystem.render();
}
if(isGameOn == true) {
Gdx.gl.glClearColor(255, 0, 0, 0);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT|GL20.GL_DEPTH_BUFFER_BIT);
fpsSystem.render();
renderingSystem.render();
}
}
@Override
public void dispose() {
menuSystem.dispose();
fpsSystem.dispose();
renderingSystem.dispose();
}
}
我有一个处理渲染的RenderingSystem类,一个FirstPersonSystem类初始化另一个类FPSCameraController类,它控制逻辑和输入,代码借用了libGDX附带的FirstPersonCameraController类。
所以我可以一起测试这些类,我使用了一个名为isGameOn的布尔值,它运行得很好。经过一段时间的测试和重构,我设法让一切工作除了输入。按下“新游戏”后,3D框会完美呈现。但输入不起作用。如果我将布尔值更改为true,它将呈现框但仍然没有输入。
代码似乎独立工作,但试图将它们组合在一起对我来说有点棘手。
我认为这可能是代码订单问题,但我很难过。我是libGDX的新手,我过去一直在认真地工作Java一段时间,所以我的代码基础可能会阻止我搞清楚。
其余代码在github上Here
任何帮助\洞察力/侮辱都将非常感激。谢谢!
答案 0 :(得分:0)
我answered one problem关于在LibGdx中使用Game
和Screen
类来改善切换效果,这可能会对您的情况有所帮助。
该代码段的Game/Screen tutorial使用Gdx.input.
方法进行鼠标,键盘和触摸事件。
其余部分应该相当简单。