我点击了谷歌的每个结果我能发现可能会帮助我,但没有成功。
我建立了一个游戏,我想实现一个完整的UI。 在我的游戏我有我的精灵单独的类,所以,在做制作屏幕几个教程我想实现的东西,我可以用这些单独的类用于获取纹理,当前帧等
我得到的地方,我可以在两个屏幕之间,如果他们不是指任何身外之物切换点,但每当我尝试引用的游戏画面在我的精灵类,它崩溃,指着我这个在游戏类:
if (screen != null) screen.render(Gdx.graphics.getDeltaTime());
因此,这里是我使用的(即一类的默认减去任何实现的方法或其他的东西)的代码。
Tutorial.java:
public class Tutorial extends Game {
MainMenuScreen mainMenuScreen ;
AnotherScreen anotherScreen;
Player player ;
@Override
public void create() {
mainMenuScreen = new MainMenuScreen(this);
anotherScreen = new AnotherScreen(this);
setScreen(mainMenuScreen);
}
}
MainMenuScreen.java(问题是在这里的批次):
public class MainMenuScreen implements Screen {
Tutorial game ;
SpriteBatch batch ;
Player player ;
Texture test ;
public MainMenuScreen(Tutorial game){
this.game = game;
}
@Override
public void render(float delta) {
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL30.GL_COLOR_BUFFER_BIT);
batch.begin();
batch.draw(player.playerTexture, 200, 200); // error points to here
batch.end();
}
}
AnotherScreen.java(运行良好):
public class AnotherScreen implements Screen {
Tutorial game ;
SpriteBatch batch ;
Texture test ;
public AnotherScreen(Tutorial game){
this.game = game;
}
@Override
public void render(float delta) {
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL30.GL_COLOR_BUFFER_BIT);
batch.begin();
batch.draw(test, 0, 200);
batch.end();
}
@Override
public void show() {
batch = new SpriteBatch();
test = new Texture(Gdx.files.internal("badlogic.jpg"));
}
}
Player.java:
public class Player {
Texture playerTexture ;
Vector2 position;
String textureLoc;
public Player(Vector2 position, String textureLoc){
//What I am trying to get from AnotherScreen.java
playerTexture = new Texture(Gdx.files.internal("badlogic.jpg"));
}
public Texture getPlayerTexture() {
return playerTexture;
}
public void setPlayerTexture(Texture playerTexture) {
this.playerTexture = playerTexture;
}
}
在控制台确切的错误是:
Exception in thread "LWJGL Application" java.lang.NullPointerException
at com.tutorial.MainMenuScreen.render(MainMenuScreen.java:25)
at com.badlogic.gdx.Game.render(Game.java:46)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:206)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:114)
我究竟做错了什么? 我已经修改了代码把一切在不同的地方,但我不能得到它的工作。 感谢您的时间!
我发现,如果我打开MainMenuScreen,然后去AnotherScreen并尝试从主得到的纹理中的另一展现,如果我有教程转给另一个之前得到纹理它的工作原理。 这不与球员的工作,虽然...