Как лучше всего нарисовать «кнопки» со сменными скинами в видеоигре?

StackOverflow https://stackoverflow.com/questions/7017

  •  08-06-2019
  •  | 
  •  

Вопрос

Ищу идеи, как нарисовать «кнопку» со скинами в игровом приложении.Если я использую фиксированное невекторное изображение спрайта в качестве фона кнопки, я не смогу легко изменить размер кнопки.Если я пишу код для рисования кнопки изменяемого размера (как рисуются кнопки Windows), тогда в дело должен вмешаться программист - и это усложняет создание скинов.Другой вариант — разбить кнопку на 9 меньших изображений (3x3) и растянуть их все — вроде того, как в HTML делается закругленные углы.

Есть ли другой «более простой» способ?Какой подход лучше всего?

Это было полезно?

Решение

Если вы действительно хотите добиться этого, то можно сделать это с помощью текстурных координат.Подобно тому, как вы создаете растягиваемую кнопку/панель в HTML с помощью таблицы, вы просто определяете UV-координаты для углов, верхней растягиваемой области, нижней растягиваемой области, боковых растягиваемых областей и затем середины.

Пример реализации этого в движке XNA (хотя это движок с закрытым исходным кодом) см. здесь:http://www.flaredball.com/frb/docs/index.php?title=SpriteFrame_Tutorial

Другие советы

Да.Я работаю в редакторе.Это язык, похожий на XAML (или, если хотите, на OpenLaszlo) для XNA.Таким образом, редактор может изменить размер кнопок.Размер кнопок также можно изменить с помощью таблицы стилей.

Я думаю, вы правы: в реальном дизайне, скорее всего, все кнопки будут одинакового размера.Но даже в оконном приложении иногда нужно сделать кнопку шире, чтобы вместить текст.

Это должно быть возможно с помощью шейдеров.Вероятно, вам придется выполнить поиск по текселям, но это сократит количество треугольников в сложном пользовательском интерфейсе.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top