Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs

ct.js

Create cool 2D games with a free game editor! · By Cosmo Myzrail Gorynych

Идея для UI

A topic by KosmoTheCat created 44 days ago Views: 34 Replies: 1
Viewing posts 1 to 2

Не знаю как ты намерен вводить интерфейс, поэтому напишу свои мысли об этом. :)

Я бы предложил на вкладке "Интерфейс" добавить раздел "Макеты" (Layouts), которые бы создавались, как комнаты. В макете можно расположить спрайты, надписи, окошки и т.д. А в коде игры вызывать их командой типа "ct.ui.show("Dialog", params)" и прятать командой типа "ct.ui.hide("Dialog").  Соответственно в коде каждого меню можно прописывать управление им, выделение элементов и привязку элементов к определённым переменным.

Таким образом можно было бы при необходимости выводить несколько разных частей интерфейса одновременно. Например, главный интерфейс игры (очки, жизни и т.д.), меню поверх него, подменю, диалоговые окна и др.

Дополнительно в меню можно ввести параметр "PauseGame", который прекращает выполнение кода "Кадр" для тех типов и комнат, у которых параметр "PauseInMenu" выставлен в "True". 

PS: Хотел написать в Дискорде, но пришлось бы долго формулировать это на английском. :)

Developer

А вот я как раз сегодня писал в дискорде про интерфейс в коте :ь

Твои мысли хорошие, и такой подход хорошо обкатан в 3д индустрии, а именно в Unreal Engine. Для меня там подход — священный грааль. В UE выделенный редактор интерфейса и можно визуально верстать его так, каким он будет в игре. Только я вот думаю хотя бы для начала делать не выделенный, а рассматривать каждый Макет как отдельную комнату, потом делал ct.rooms.spawn('UI'). Так я делал в Among the Wolves, и получилось дёшево и сердито — в редакторе визуально делаю интерфейс, и вроде как и особо ничего сверху разрабатывать не пришлось. В последнем макете редактора комнат это называется "связанные комнаты". АПИ примерно как у тебя и будет, думаю.
Крч поживём — увидим; там много всего завязано друг на друге, многие оптимальные решения придётся искать опытным путём.

Касательно паузы, можно и сейчас всё паузить и продолжать работать с интерфейсом: туториал в доках