【发布时间】:2015-06-29 21:51:53
【问题描述】:
我有一个名为 World 的类,其中包含与玩家交互的所有实体(障碍物、背景、场景),并且该类有一个名为 drawWorld() 的方法> 在其中绘制所有实体。我在这个方法上放的第一件事是背景,但它没有绘制背景纹理,我不知道为什么。
此渲染方法来自我的游戏屏幕,我在其中调用方法 drawWorld():
@Override
public void render(float delta) {
// OpenGL clear screen
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(Gdx.gl.GL_COLOR_BUFFER_BIT | Gdx.gl.GL_DEPTH_BUFFER_BIT);
// Set the projection matrix for the SpriteBatch
this.game.spriteBatch.setProjectionMatrix(this.game.orthoCamera.combined);
// Act stage
this.game.stage.act(delta);
// SpriteBatch begins
this.game.spriteBatch.begin();
// Draw world
this.world.drawWorld();
// Draw stage
this.game.stage.draw();
// SpriteBatch ends
this.game.spriteBatch.end();
}
我在这里渲染背景:
public void drawWorld() {
// Draw background
this.game.spriteBatch.draw(this.background, 0, 0);
}
别忘了我创建了背景纹理:
// Load background image
this.background = Assets.manager.get(Assets.background);
我做错了什么?
【问题讨论】:
-
在屏幕中引用了
game对象:this.game.spriteBatch.begin()和world对象:this.game.spriteBatch.draw(this.background, 0, 0)。是同一个game对象吗? -
抱歉,延迟发布,但是是的,它是同一个游戏对象。
-
你记得在调用
this.background = Assets.manager.get(Assets.background);之前加载Assets.background吗? -
在 Game 类中我做了 Assets.load() 和 Assets.manager.finishLoading()。在我的播放器类中,我做了 this.texture = Assets.manager.get(Assets.character),所以它也应该在我的 World 类中工作。你想要更多的代码来看看发生了什么吗?
-
是的。你能具体说明一下
this.game.stage是如何初始化的吗?
标签: background libgdx textures render