Использование scene2d.ui с libgdx: откуда берется скин?
Я читал об особенностях libgdx scene2d, включая элементы пользовательского интерфейса, но не могу заставить их работать. Кажется, все они используют объект скина, как его создать?
Я прошел хороший урок, который создает простую игру libgdx, ловя капли дождя в ведре, и я создал простое приложение для настольных игр, загружая изображения с текстурным атласом. Тем не менее, scene2d звучит как лучший способ управления движущимися частями в приложении для настольных игр, а также любыми кнопками и меню.
2 ответа
Чтобы загрузить обложку, вы можете начать с образцов файлов обложки, используемых в тестовом проекте libgdx.
В этом вопросе есть немного больше деталей, и я обнаружил, что мне пришлось переместить файлы в подкаталог ресурсов, чтобы избежать ошибки в HTML-версии. (Если я оставляю файлы в папке ресурсов, я вижу сообщение об ошибке типа "GwtApplication: исключение: ошибка чтения файла 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);
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);
Если ваш экран более сложный, подумайте об использовании таблицы.
Если вы хотите использовать другой шрифт, вы можете сгенерировать файл шрифта и файл изображения, используя Hiero. После того, как вы это сделаете, вам нужно будет взять новое изображение шрифта и использовать TexturePacker для перепаковки его с другими ресурсами скина.
Теперь Libgdx предоставляет Git-репозиторий для получения скина, вы можете скачать его с: https://github.com/libgdx/libgdx-skins, скопировать ресурсы: https://github.com/libgdx/libgdx-skins/tree/master/skins/visui/assets для вашего проекта