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

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

Эта страница показывает, как превратить репозиторий шаблона в ваш первый рабочий скрипт для 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, чтобы перезагрузить скрипты.


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

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