Это от 6 дня Flappy птицы отдыха учебника - http://www.kilobolt.com/day-6-adding-graphics---welcome-to-the-necropolis.htmlПочему SpriteBatch ничего не рисует (LibGdx)?
Вот файл изображения я использую для текстуры в моей игре. Это 256px x 64px .png файл.
Вот класс, который я использовал для загрузки текстур и конкретный TextureRegion (часть из texure), что я хочу SpriteBatch рисовать.
public class AssetLoader {
public static Texture texture;
public static TextureRegion bg;
public static void load() {
texture = new Texture(Gdx.files.internal("data/texture.png"));
bg = new TextureRegion(texture, 0, 0, 136, 43);
}
}
And I call AssertLoader.load(), along with setting up game screen from
public class MyGdxGame extends Game{
@Override
public void create() {
AssetLoader.load();
setScreen(new GameScreen());
}
}
And inside GameScreen.java
public class GameScreen implements Screen {
//delegate render task
private GameRenderer renderer;
public GameScreen() {
float screenHeight = Gdx.graphics.getHeight();
float screenWidth = Gdx.graphics.getWidth();
float gameWidth = 136;
float gameHeight = screenHeight/(screenWidth/gameWidth);
renderer = new GameRenderer((int)gameHeight);
}
}
And inside GameRederer, the class I delegate to render the game
public class GameRenderer {
private int gameHeight;
private SpriteBatch batch;
private OrthographicCamera cam;
public GameRenderer(int gameHeight) {
this.gameHeight = gameHeight;
cam = new OrthographicCamera();
batch = new SpriteBatch();
batch.setProjectionMatrix(cam.combined);
cam.setToOrtho(true, 136, gameHeight);
}
public void render() {
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.begin();
batch.disableBlending();
batch.draw(AssetLoader.bg, 0, (gameHeight/2) + 23, 136, 43);
batch.end()
}
}
Что я получаю, когда я бегу версию настольной игры черный экран, показанный выше (черный, потому что я установить фон на черный с этих строк кода
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
Кто-нибудь знает, почему рисунок SpritchBatch не отображается? Я извлек текстуру части текстуры, которую я хотел с этой строкой кода (начинается с 0,0, ширина 136, высота 43) - используется GIMP - для поиска чтобы отрезать.
bg = new TextureRegion(texture, 0, 0, 136, 43);
Я также разместил несколько операторов журнала (удалил их из вида), чтобы убедиться, что перед рисунком ширина и высота bg были установлены правильно, какими они были. И проблема не может быть высотой игры, потому что я использовал оператор печати и обнаружил, что это 204, что означает, что это выражение (gameHeight/2) + 23 будет оцениваться до 125, которое находится в пределах между 0 и высотой игры.
Я проверил другие темы. Моя проблема не может быть libgdx spritebatch not rendering textures, потому что SpriteBatch должен перезаписать фон. И это не может быть LibGDX: Android SpriteBatch not drawing, потому что я работаю на рабочем столе, а не в andorid.
Хорошо, позвольте мне дать вам несколько общих советов. Предлагаю вам прочитать «Изучение разработки игр LibGDX». Это хорошая книга для новичков, и она даст вам основные знания о libgdx. Если у вас нет денег, вы знаете, что делать, правильно? Вы также пытались загрузить исходный код из этого учебника? Может быть, вы что-то пропустили. И это мой исходный код https://github.com/nikoliazekter/JustSimpleTD. Это может помочь вам. – nikoliazekter
где вы называете игруRenderer.render()? – grimrader22
grimdradar22, я знаю, что это называется, потому что фон - черный фон, который я указал. – committedandroider