Создание первого скрипта
Эта страница показывает, как превратить репозиторий шаблона в ваш первый рабочий скрипт для Melonity.
Начните с проекта-примера
Проще всего начать с примера, который уже входит в шаблон:
Он уже демонстрирует несколько важных частей API:
- регистрация скрипта
- пункты меню
- callback-обработчики
- простой рендеринг
Совет
Не пытайтесь сразу сделать большой скрипт. Сначала убедитесь, что пример проекта компилируется и правильно загружается в Melonity.
Минимальная структура скрипта
Скрипт Melonity обычно начинается с объекта ScriptDescription и вызова RegisterScript:
let MyScript: ScriptDescription = {};
namespace myScript {
MyScript.OnScriptLoad = () => {
console.log('My first script loaded');
};
MyScript.OnScriptUnload = () => {
console.log('My first script unloaded');
};
RegisterScript(MyScript, 'My first script');
}Это минимально необходимая структура для очень простого скрипта:
ScriptDescriptionсодержит callback-обработчики, используемые MelonityOnScriptLoadзапускается при загрузке скриптаOnScriptUnloadзапускается, когда скрипт выгружаетсяRegisterScriptрегистрирует скрипт в системе
Важно
Без RegisterScript некоторые части скрипта всё ещё могут выглядеть рабочими, например пункты меню. Однако callback-обработчики не будут работать, пока скрипт не зарегистрирован.
Добавьте простой пункт меню
В примере шаблона переключатель добавляется через Menu.AddToggle. Это хороший первый шаг, поскольку он позволяет включать или отключать логику без необходимости каждый раз редактировать код.
const PATH = ['Tab name', 'Nav section', 'Block name'];
let enabled = Menu.AddToggle(PATH, 'Enable', false)
.OnChange(state => {
enabled = state.newValue;
})
.GetValue();PATH — массив, который определяет, где этот пункт появляется в меню Melonity.
Добавьте простую логику скрипта
После регистрации скрипта можно использовать callback-обработчики, например OnUpdate и OnDraw.
Пример:
MyScript.OnUpdate = () => {
if (!enabled) {
return;
}
console.log('Script is running');
};Если вы хотите нарисовать что-то на экране, вы также можете использовать OnDraw:
MyScript.OnDraw = () => {
if (!enabled) {
return;
}
Renderer.SetDrawColor(Color.YELLOW);
Renderer.DrawFilledRect(300, 200, 120, 120, 8, Enum.RoundCorners.All);
};Важно
OnDraw вызывается каждый кадр. Это означает, что callback срабатывает чаще при более высоком FPS, поэтому внутри него не должно быть тяжёлой логики. OnDraw может ухудшить производительность.
Проверяем работу скрипта
Ваш первый скрипт работает правильно, если:
npm run watchперекомпилирует проект без ошибок- сгенерированный
.jsфайл записывается в правильную папку скриптов - скрипт появится в списке локальных скриптов в Melonity
- скрипт включен в этом списке
- Melonity загружает скрипт
OnScriptLoadсрабатывает- ваш пункт меню появится в меню
- скрипт реагирует, когда вы включаете или отключаете его
Совет
Если вы добавите новый файл в папку scripts и он не появится в списке сразу, нажмите F7, чтобы перезагрузить скрипты.
Куда идти дальше
Как только первый скрипт заработает, наиболее полезными будут следующие страницы: