Скин по умолчанию 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, используемый для описания стилей различных элементов пользовательского интерфейса. В случае вышеупомянутого исключения метка внутри текстового поля не имеет стиля по умолчанию.
Что вы можете просто сделать, это использовать шаблон, предоставленный в папке тестов:
Поместите эти файлы в папку ресурсов вашего проекта 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 После того, как вы перейдете к нему, вы немного поняли гораздо больше о скинах и о том, как их использовать