Как установить цвет фона или изображение на столе? - PullRequest
0 голосов
/ 10 апреля 2019

Я делаю RTS-игру и хочу, чтобы пользовательский интерфейс был похож на Ages of Empires с пользовательским интерфейсом внизу. У меня возникают трудности с установкой фона таблицы, содержащей конкретные элементы.

Я много чего перепробовал, например:

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

Вот где я рисую пользовательский интерфейс:

        skin = new Skin(Gdx.files.internal("core/assets/skinComposerExport/uiskin.json"));
        stage =         new Stage(new ScreenViewport());
        mainTable =     new Table(skin);
        unitInfoTable = new Table(skin);
        unitSpecTable = new Table(skin);

        className =     new Label("Placeholder scnm", skin);
        ...
        abilityCD =     new Label("Placeholder acdn", skin);

        mainTable.setPosition(Gdx.graphics.getWidth() / 2.0f, 0);
        mainTable.center().bottom();
        mainTable.setBackground("UI_background");


        addLabelsToTable(unitInfoTable, className, hitPoints, mana, dmg, range);

        addLabelsToTable(unitSpecTable, abilityName, abilityMana, abilityDmg, abilityRange, abilityCD);

        mainTable.add(unitInfoTable).padRight(20);
        mainTable.add(unitSpecTable);


        stage.addActor(mainTable);

Я хочу, чтобы вся нижняя часть экрана была белой (около 200 пикселей в высоту и заполняла всю ось x) и рисовала на ней элементы, но я не могу установить цвет фона.

1 Ответ

1 голос
/ 17 апреля 2019

Вы можете задать размер таблицы, чтобы ваша сцена знала, как правильно ее отобразить. (Или используйте setFillParent (true) на вашей внешней таблице). Как правило, я создаю root таблицу, которая является размером сцены, затем я добавляю дополнительные элементы scene2d к этой root таблице, выравнивая по мере необходимости.

Вот простой пример использования ShadeUI

@Override
public void create() {
    stage = new Stage(new ScreenViewport());
    batch = new SpriteBatch();
    skin = new Skin(Gdx.files.internal("shadeui/uiskin.json"));

    // create a root table, sized to our stage, and add it to the stage
    Table root = new Table();
    root.setBackground(skin.getDrawable("dialogRed"));
    root.setSize(stage.getWidth(), stage.getHeight());
    stage.addActor(root);

    // now create our menu, bottom-aligned, filled to width, and add it to root
    Table menu = new Table();
    menu.setBackground(skin.getDrawable("dialogDim"));
    root.add(menu).expand().bottom().fillX().height(50);

    // add additional labels to the menu
    menu.defaults().expandX().center().uniformX().uniformX();
    menu.add(new Label("HP", skin));
    menu.add(new Label("MP", skin));
    menu.add(new Label("My Name", skin));
    menu.add(new Label("My Class", skin));
}

@Override
public void render() {
    Gdx.gl.glClearColor(0, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    batch.begin();
    stage.draw();
    batch.end();
}

А вот как это выглядит, когда я запускаю его: Image of UI

...