Так как Table.drawDebug устарел в libGDX, что я должен использовать вместо этого?

10

Я следую книге «Изучение разработки LibGDX», чтобы сделать простую игру. Я нахожусь в разделе создания меню, где мы создаем этап и отображаем его с границами отладки.

Книга говорит об использовании, Table.drawDebug(stage)но этот статический метод, похоже, полностью удален из Tableкласса frameworks .

Я импортирую com.badlogic.gdx.scenes.scene2d.ui.Table; ниже мой код:

@Override
public void render(float deltaTime) {
    Gdx.gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    if (debugEnabled) {
        debugRebuildStage -= deltaTime;
        if (debugRebuildStage <= 0) {
            debugRebuildStage = DEBUG_REBUILD_INTERVAL;
            rebuildStage();
        }
    }
    stage.act(deltaTime);
    stage.draw();

    Table.drawDebug(stage);
}

Последняя строка, Table.drawDebug(stage);имеет ошибку компиляции"The method drawDebug(ShapeRenderer) in the type Table is not applicable for the arguments (Stage)"

Есть ли новый способ рисовать сцену в режиме отладки?

Shijima
источник

Ответы:

11

Это изменилось еще раз.

Правильный код для метода в настоящее время выглядит следующим образом, так как stage.setDebug(), казалось, был удален (не могу найти, какая версия произошла) и заменен на stage.setDebugAll(true);:

@Override
public void render(float deltaTime) {
    Gdx.gl.glClearColor(0, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    if (debugEnabled) {
        debugRebuildStage -= deltaTime;
        if (debugRebuildStage <= 0) {
            debugRebuildStage = DEBUG_REBUILD_INTERVAL;
            rebuildStage();
        }
    }
    stage.act(deltaTime);
    stage.draw();
    stage.setDebugAll(true);
}

Документация по API Scene2d для класса Stage .

Джеймс Скемп
источник
5

Нашел ответ, вместо статического Table.drawDebug(stage);вызова есть вызываемый метод экземпляра stage.setDebug().

Shijima
источник
1
С текущей версией libGDX, похоже, это уже не так, по крайней мере, если ее поменять в том же месте, где ее помещает эта книга.
Джеймс Скемп