Подтвердить что ты не робот

По умолчанию Skin LibGDX?

Я слежу за этим: https://code.google.com/p/table-layout/#Quickstart, чтобы получить небольшое представление о таблицах в 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);

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

4b9b3361

Ответ 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 (может быть весьма полезен для очень маленьких/простых приложений, для отладки, когда вы в реальном спешке, чтобы пользовательский интерфейс был видимым и т.д.).