Ponieważ Table.drawDebug jest przestarzałe w libGDX, czego powinienem użyć?

10

Postępuję zgodnie z książką „Learning LibGDX Game Development”, aby stworzyć prostą grę. Jestem w sekcji tworzenia menu, w której tworzymy scenę i renderujemy ją z ramkami debugowania.

Książka mówi, aby używać, Table.drawDebug(stage)ale ta statyczna metoda wydaje się Tablecałkowicie usunięta z klasy frameworków .

Importuję com.badlogic.gdx.scenes.scene2d.ui.Table; poniżej jest mój kod:

@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);
}

Ostatni wiersz Table.drawDebug(stage);zawiera błąd kompilacji"The method drawDebug(ShapeRenderer) in the type Table is not applicable for the arguments (Stage)"

Czy jest nowy sposób na narysowanie sceny w trybie debugowania?

Shijima
źródło

Odpowiedzi:

11

To się zmieniło jeszcze raz.

Prawidłowy kod metody jest obecnie następujący, ponieważ stage.setDebug()pozornie został usunięty (nie można znaleźć wersji, która się wydarzyła) i zastąpiony przez 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);
}

Dokumentacja API Scene2d dla klasy Stage .

James Skemp
źródło
5

Znalazłem odpowiedź, zamiast Table.drawDebug(stage);wywołania statycznego wywoływana jest metoda instancji stage.setDebug().

Shijima
źródło
1
W przypadku obecnej wersji libGDX wydaje się, że tak nie jest, przynajmniej jeśli zostanie ona wymieniona w tym samym miejscu, w którym znajduje się ta książka.
James Skemp