Перейти к содержимому

Создание первого скрипта

Эта страница показывает, как превратить репозиторий шаблона в ваш первый рабочий скрипт для Melonity.


Начните с проекта-примера

Проще всего начать с примера, который уже входит в шаблон:

Он уже демонстрирует несколько важных частей API:

  • регистрация скрипта
  • пункты меню
  • callback-обработчики
  • простой рендеринг

Совет

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


Минимальная структура скрипта

Скрипт Melonity обычно начинается с объекта ScriptDescription и вызова RegisterScript:

ts
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-обработчики, используемые Melonity
  • OnScriptLoad запускается при загрузке скрипта
  • OnScriptUnload запускается, когда скрипт выгружается
  • RegisterScript регистрирует скрипт в системе

Важно

Без RegisterScript некоторые части скрипта всё ещё могут выглядеть рабочими, например пункты меню. Однако callback-обработчики не будут работать, пока скрипт не зарегистрирован.


Добавьте простой пункт меню

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

ts
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.

Пример:

ts
MyScript.OnUpdate = () => {
	if (!enabled) {
		return;
	}

	console.log('Script is running');
};

Если вы хотите нарисовать что-то на экране, вы также можете использовать OnDraw:

ts
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, чтобы перезагрузить скрипты.


Куда идти дальше

Как только первый скрипт заработает, наиболее полезными будут следующие страницы: