DroidScript
DroidScript
скрипим понемногу

Живой просмотр в Roblox

16.11.2023

Roblox - это интересная среда для разработки игр и обучения основам программирования. Но у неё нет одной из важнейших функций - живого просмотра, по причине чего приходится постоянно перезагружать проект после внесения изменений в скрипты. Будем это исправлять.

Основным языком программирования в Roblox является Lua, в котором есть метод loadstring. Этот метод позволяет загружать код из строки и выполнять его. Выполнять код может и командная строка в Roblox Studio. Но её недостаток состоит в том, что она может выполнять далеко не любой код и является однострочным полем ввода. Нам же требуется многострочное поле, при помощи которого можно будет создавать объекты в сценах, изменять их свойства и обрабатывать события. Для включения поддержки метода loadstring установите в контейнере ServerScriptService флажок для свойства LoadStringEnabled. Алгоритм реализации данного решения следующий:

  • Создать на клиенте многострочное поле ввода Textbox
  • При изменении содержимого поля ввода (или нажатии на кнопку) отправлять его на сервер для обработки

Добавьте в проект рамку с прокруткой ScrollingFrame, и в него текстовое поле TextBox с многострочностью: MultiLine = true, TextWrapped = true

Создадим событие, которое будет возникать при изменении ввода и отправлять его на сервер для обработки. Выбираем ReplicatedStorage и создаём новое событие с именем Event (name = Event).

Добавим в рамку прокрутки кнопку и серверный скрипт при нажатии на кнопку. Важно, чтобы свойство скрипта RunContext = Legacy. Если это свойство будет Server, то с большой степенью вероятность серверный скрипт будет удваивать событие: нажали на кнопку один раз, а серверный скрипт выполнился 2 раза.

Создадим для кнопки локальный скрипт.

Базовая версия готова и наступает самый сложный момент - дописывание кода редактирования для TextBox. С момента создания Roblox никто не думал, что TextBox кто-то захочет использовать для редактирования многострочного текста, и функциональность этого элемента крайне скудна. Нет ни возможности удалять символы по Del, ни выделения с Shift, нет других необходимых для более или менее удобного редактирования текста функций. Значит, всё необходимое нужно будет писать руками в таком духе.

Локальный скрипт TextBox

В данном прмере интерпретация скрипта будет происходить при любом изменении ввода в поле TextBox, что приведёт к отображению ошибок в консоли до тех пор, пока в текстовой области не будет всё правильно и до конца дописано. Если такой режим предпросмотра раздражает, то можно интерпретацию скрипта повесить на какое-нибудь сочетание клавиш или нажатии на кнопку "Выполнить".

© 2016-2024 
actech