Libgdx создает TextButton с фоном с помощью uiskin.json

Я хочу определить фон TextButton с помощью uiskin.json.

Вот что я пробовал, но не получилось:

com.badlogic.gdx.scenes.scene2d.ui.Skin$TintedDrawable: {
        img: { file: bg.png }
    },
com.badlogic.gdx.scenes.scene2d.ui.TextButton$TextButtonStyle: {
    default: { down: default-round-down, up: img, font: default-font, fontColor: white }
}

Поэтому я хочу сделать bg.png фоном по умолчанию. Как мне это сделать?

1 ответ

Скин не может прочитать расположение файлов из json. Если вы следовали инструкциям для Skin, вы, вероятно, создали его с помощью TextureAtlas следующим образом:

skin = new Skin(skinFilePath, textureAtlas);

Когда вы загружаете его таким образом, все изображения в json должны быть доступны по их именам в TextureAtlas.

Как правило, вам нужно, чтобы все ваши изображения были в одном TextureAtlas по соображениям производительности. Так что лучшим решением было бы добавить это bg.png изображение в ваш TextureAtlas, а затем вы можете обратиться к нему по имени TextureAtlas.

Если вам нужно загрузить его как отдельный файл, то вы должны вручную загрузить его перед загрузкой своего скина.

Texture bgTexture = new Texture("bg.png");
skin = new Skin(); //empty constructor causes it not to load yet.
skin.add("bg", bgTexture);
skin.addRegions(textureAtlas); // you will be responsible for disposing the atlas separately from the skin now.
skin.load(skinFilePath);
Другие вопросы по тегам