Ответ 1
Когда дело доходит до пользовательского интерфейса в libGDX, вы обнаружите, что он отличается от того, что вы использовали раньше (yaml, json, xml, UI Builders и т.д.).
Макет таблицы. Вот как структурирован и отформатирован пользовательский интерфейс Scene2d. Ссылка, которую вы предоставили, является отличным учебным пособием, но, как вы поняли, вам нужен скин для большинства вещей.
LibGDX Skin - состоит из трех вещей: изображения текстурного пакета, файла текстурного пакета и 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 в wiki.
Примечание.. Вы можете использовать артефакт gdx-tools
, чтобы иметь возможность использовать скин UI по умолчанию вне -box (может быть весьма полезен для очень маленьких/простых приложений, для отладки, когда вы в реальном спешке, чтобы пользовательский интерфейс был видимым и т.д.).