Скин по умолчанию LibGDX?

Я следил за этим: https://code.google.com/p/table-layout/, чтобы получить небольшое введение в таблицы в LibGDX. Я уже немного поэкспериментировал с кнопками.

Теперь у меня есть этот код:

Label introLabel = new Label("Skip Intro", skin);
TextField introText = new TextField("", skin);

table.add(introLabel);
table.add(introText).width(100);
table.row();

Но это бросает NullPointerException так как: No com.badlogic.gdx.scenes.scene2d.ui.Label$LabelStyle registered with name: default

Я только добавил свои кнопки (откуда-то еще на экране) в скин:

atlas = new TextureAtlas("assets/gui/buttons/alpha_generic_buttons.pack");

skin = new Skin();
skin.addRegions(atlas);

Теперь у меня возникнет вопрос: какие текстуры нужны таблице, и, прежде всего, как их использовать с таблицей?

1 ответ

Решение

Когда дело доходит до пользовательского интерфейса в libGDX, вы обнаружите, что он сильно отличается от того, что вы использовали раньше (yaml, json, xml, UI Builders и т. Д.).

Table Layout - так структурируется и форматируется пользовательский интерфейс Scene2d. Ссылка, которую вы предоставили, является отличным учебным пособием, но, как вы уже поняли, вам нужен скин, чтобы делать большинство вещей.

Скин LibGDX - состоит из 3 вещей, изображения пакета текстур, файла пакета текстур и Json для настройки стилей. Вы также можете генерировать их программно, как вы делаете, но я считаю, что гораздо проще просто загрузить их из файла и использовать. Если вы хотите узнать больше о том, как создавать скины, редактировать их и т. Д., Перейдите по этой ссылке: Скины.

Теперь вернемся к исключению, которое вы получаете. Это связано с тем, что в созданном вами скине отсутствует json, используемый для описания стилей различных элементов пользовательского интерфейса. В случае вышеупомянутого исключения метка внутри текстового поля не имеет стиля по умолчанию.

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

  1. Атласпак Файл
  2. Json File
  3. Изображение Atlaspack
  4. Изображение шрифта
  5. Файл шрифта

Поместите эти файлы в папку ресурсов вашего проекта Android. И тогда вы можете легко загрузить этот скин одной строкой кода:

Skin uiSkin = new Skin(Gdx.files.internal("uiskin.json"));

В нем будет отсутствующая часть информации для создания вашего объекта TextField, а также куча других стилей по умолчанию:

com.badlogic.gdx.scenes.scene2d.ui.Label$LabelStyle: {
    default: { font: default-font, fontColor: white },
}

Надеюсь, это поможет вам начать. Есть ряд других мелочей, так что не бойтесь просматривать статью Scene2d.UI в вики для получения дополнительной информации.

Примечание: вы можете использовать gdx-tools Артефакт, позволяющий использовать стандартную оболочку пользовательского интерфейса по умолчанию (может быть очень полезным для очень маленьких / простых приложений, для отладки, когда вы действительно хотите увидеть пользовательский интерфейс и т. д.).

Или, если вы хотите создать свой собственный, Raleus создал редактор скинов, Довольно удобный пользовательский интерфейс, простой в использовании, потрясающие результаты https://github.com/raeleus/skin-composer После того, как вы перейдете к нему, вы немного поняли гораздо больше о скинах и о том, как их использовать

Другие вопросы по тегам