Использование scene2d.ui с libgdx: откуда берется кожа?
Я читал о функции scene2d, включая элементы пользовательского интерфейса, но я не могу заставить их работать. Все они, похоже, используют объект кожи, как его создать?
Я прошел через хороший учебник это создает простую игру libgdx, ловящую капли дождя в ведре, и я создал простое приложение для настольной игры, загрузив изображения с помощью текстура атлас. Однако scene2d звучит как лучший способ управления движущимися фигурами на доске игры приложения, а также любые кнопки и меню.
2 ответов
чтобы загрузить скин, вы можете начать с файлов образцов кожи, используемых в тестовом проекте libgdx.
есть немного больше деталей в этот вопрос, и я обнаружил, что мне пришлось переместить файлы в подкаталог активов, чтобы избежать ошибки в 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 в проекте