Использование scene2d.ui с libgdx: откуда берется кожа?

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

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

2 ответов


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

  1. Файл Atlaspack
  2. Файл Json
  3. Изображение Atlaspack
  4. Шрифт

есть немного больше деталей в этот вопрос, и я обнаружил, что мне пришлось переместить файлы в подкаталог активов, чтобы избежать ошибки в HTML версия. (Если я оставляю файлы в папке assets, я вижу сообщение об ошибке, например: "GwtApplication: exception: Error reading file data/uiskin.формат JSON.")

я написал пример, который отображает одну кнопку, и интересный код в игра класс. Пример настолько прост, что вам нужно только две переменные-члена для удержания сцены и кнопки.

private Stage stage;
private TextButton button;

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

Skin skin = new Skin(Gdx.files.internal("data/uiskin.json"));

подключите кнопку к сцене.

stage = new Stage();
button = new TextButton("Click Me!", skin);
stage.addActor(button);

подключите прослушиватель к кнопке и зарегистрируйте сцену для получения событий.

button.addListener(new ClickListener() {
    @Override
    public void clicked(InputEvent event, float x, float y) {
        button.setText("Clicked!");
    }
});
Gdx.input.setInputProcessor(stage);

The render() метод в основном является вызовом stage.draw().

Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

stage.act(Math.min(Gdx.graphics.getDeltaTime(), 1 / 30f));
stage.draw();

тогда вам просто нужно макет экрана, когда он изменяется.

button.setPosition(
        (width-button.getWidth())/2, 
        (height-button.getHeight())/2);

если ваш экран более сложный, рассмотрите возможность использования стол.

если вы хотите использовать другой шрифт, вы можете создать файл шрифта и файл изображения с помощью Иеро. После того, как вы это сделаете, вам придется взять новое изображение шрифта и использовать TexturePacker чтобы упаковать его с другим активы кожа.


теперь и libGDX предоставить репозиторий Git, чтобы получить кожу, вы можете скачать его с: https://github.com/libgdx/libgdx-skins активы скопировать:https://github.com/libgdx/libgdx-skins/tree/master/skins/visui/assets в проекте