LibGDX-заголовок диалога не подходит
Я успешно добавил свой собственный шрифт по умолчанию .файл json и он отображается, однако я получаю некоторые странные проблемы с размером. В частности, когда я пытаюсь создать диалог. Вот как это выглядит:
игнорируйте тот факт, что это говорит "и"
Как вы можете видеть, заголовок не подходит, и кнопка кажется немного большой... Вот как я создаю диалог:
Dialog d = new Dialog("Error", RBResources.gameSkin);
d.add(new Label("You cannot continue and empty game.", RBResources.gameSkin));
TextButton b = new TextButton("Ok", RBResources.gameSkin);
d.button(b);
d.show(this);
Вот как инициализируется скин:
gameSkin = new Skin(Gdx.files.internal("skins/uiskin.json"));
Все, что я сделал, чтобы добавить шрифт, это создал шрифт с Иеро, добавить это к директории со своей .json, и измените ссылку на файл BitmapFont с " default.фнт" до "текста.fnt " (текст-это то, что я назвал шрифтом).
2 ответов:
Итак, то, о чем я думал, подтвердилось: диалог построен с помощью одной девятки, поэтому вам нужно вручную настроить размер строки заголовка .файл атласа И.PNG-файл.
править
Это будет в основном немногоКак использовать файл JSON с LibGdx учебник.
LibGdx имеет очень полезный класс под названиемSkin. Это позволяет вам иметь .файл json вместе с a .файл атласа И.png изображение очень легко определить стили используется для изготовленияButtons,TextButtons,Dialogs и т. д.Скин LibgGdx По Умолчанию
Как работает файл JSON
Файл JSON содержит список различных типов классов и их параметров. В этом случае мы рассмотрим стильDialog. Потому что диалог-это подклассWindowон используетWindowStyle(не все подклассы других классов делают это), поэтому мы должны просмотреть файл JSON дляWindowStyle.Как вы можете видеть, dialog-это тип стиля, используемый дляcom.badlogic.gdx.scenes.scene2d.ui.Window$WindowStyle: { default: { titleFont: default-font, background: default-window, titleFontColor: white }, dialog: { titleFont: default-font, background: default-window, titleFontColor: white, stageBackground: dialogDim } },Dialogs, в то время как default используется для обычныхWindows. большинство атрибутов не требуют пояснений, но вам нужно знать, что шрифты всегда объявляются в файле JSON, вверху. Вы можете добавить столько, сколько захотите, просто не забудьте включить .файл fnt И.png изображение шрифт в той же папке, что и файл JSON, и правильно ссылаться на них. Вы можете легко создавать шрифты, используя генераторыBitmapFont, такие как Hiero, которые можно найти здесь: https://github.com/libgdx/libgdx/wiki/Hiero цвета также создаются в верхней части файла JSON, сразу под шрифтами. Вы можете создать столько, сколько захотите.stageBackground- это цвет, который будет покрывать остальную часть сцены во время отображения диалога. В этом случае этоdialogDim, который определяется какTintedDrawableв файле JSON. То последний атрибут-это ссылка на изображение в пакете изображений ATLAS.Как работает файл ATLAS
Файл ATLAS в основном представляет собой набор ссылок наTextureRegions в пакете изображений ATLAS. Многие из них не требуют объяснений, а остальные можно понять путем проб и ошибок, но сейчас мы сосредоточимся на ссылках на части диалогового окна.default-windowссылки на этот бит в файле ATLAS:default-window rotate: false xy: 1, 20 size: 27, 29 split: 4, 3, 20, 3 orig: 27, 29 offset: 0, 0 index: -1Эти поля могут быть немного запутанными. и я тоже не понимаю их всех, но вам нужно знать, что
rotateвсегда должно оставаться ложным, если вы не знаете, когда это не должно быть.xy- это расположение x и y, в пикселяхTextureRegionв пакете изображений ATLAS.size- это размер x и размер y, в пикселях.splitявляется то, какTextureRegionдолжны быть разделены (не применимо для всех ссылок на атлас), вы узнаете больше о том, как эти числа работают здесь: https://github.com/libgdx/libgdx/wiki/Ninepatches [49]}.orig, насколько мне известно, всегда совпадает сsize.offsetвсегда должно оставаться на 0, 0, если только у вас нет причины смещать область от местоположенияxyв начале. Иindexиз -1 означает, что этот регион находится в том же пакете изображений атласа, что и остальные регионы.
Как это использовать
Теперь вы можете легко вносить свои собственные изменения. Просто найдите стиль, к которому вы хотите добавить свой собственный, скопируйте синтаксис того, который вы хотите изменить (или измените по умолчанию напрямую), добавить свои собственные названия, а также добавить свой собственный атлас литературы. В пакете файлов и изображений ATLAS вы также можете добавить свои собственные регионы. Вероятно, вы также можете добавить свои собственные атрибуты для различных классов, отличных от стилей, потому что класс Skin, похоже, представляет собой легкую оболочку поверх устройства чтения JSON, которое позволяет легко читать стили.
Надеюсь, все это было понятно :)
Как говорит Стронгджошуа в своем ответе , фоном диалогового окна является Девятипачка, и поэтому размер строки заголовка определяется PNG, на котором основана девятка.
Если вам не нравится возиться с редактором пикселей и все такое, быстрое и грязное решение-это изменить масштаб, в котором визуализируется Девятипачка. Это сделает его более "пикселным", но также увеличит размер строки заголовка.
Вы можете получить доступ к объекту NinePatch и вызвать
scale()на нем из вашего диалога вот так:NinePatchDrawable dialogBack = (NinePatchDrawable)dialog.getBackground(); dialogBack.getPatch().scale(2.0f,2.0f);Править: Проблема в том, что каждый вызов scale() аддитивен, поэтому каждый раз, когда вы делаете это, он удваивается в размере. Если вы всегда хотите один и тот же размер, лучше всего установить шкалу только один раз, сразу после загрузки кожи, например:
NinePatch dialogBack = skin.getPatch("default-window"); dialogBack.scale(2.0f,2.0f);
Comments