# Playmaker

PlayMaker – популярный визуальный сценарный инструмент Unity, специально разработанный для удобства работы пользователей, не являющихся программистами.

Имейте в виду, что в отличие от Bolt, где все C# API Naninovel доступны по умолчанию, PlayMaker требует создания специального класса C# для каждого действия. Это означает, что только ограниченное подмножество API движка доступно из коробки при использовании PlayMaker. Доступные пользовательские действия также могут нарушиться в случае изменения API Naninovel.

# Установка

Установите PlayMaker, следуя инструкциям из официального руководства.

Скачайте и импортируйте пакет расширения PlayMaker.

Пользовательские действия Naninovel должны появиться в браузере действий PlayMaker в категории "Naninovel".

# Использование

В следующем видео демонстрируется использование FSM PlayMaker (finite state machine) для инициализации движка Naninovel, предварительной загрузки и воспроизведения сценария.

# События

Некоторые из основных событий Naninovel могут быть автоматически перенаправлены в FSM PlayMaker. Для этого создайте глобальное пользовательское событие с соответствующим именем и используйте его внутри FSM. Ниже приведены доступные имена событий:

  • Naninovel/Engine/OnInitialized
  • Naninovel/ScriptPlayer/OnPlay
  • Naninovel/ScriptPlayer/OnStop
  • Naninovel/StateManager/OnGameSaveStarted
  • Naninovel/StateManager/OnGameSaveFinished
  • Naninovel/StateManager/OnGameLoadStarted
  • Naninovel/StateManager/OnGameLoadFinished
  • Naninovel/TextPrinterManager/OnPrintTextStarted
  • Naninovel/TextPrinterManager/OnPrintTextFinished
  • Naninovel/LocalizationManager/OnLocaleChanged

Кроме того, можно транслировать пользовательские события PlayMaker из сценариев Naninovel с помощью команды @playmaker:

@playmaker EventName

— вызовет глобальное пользовательское событие с именем "EventName" во всех активных FSM в сцене.

Команда также позволяет отправлять события в определенные FSM с помощью параметров fsm и object. Первый параметр позволяет указать имена FSM, которые должны принимать событие, например:

@playmaker EventName fsm:Fsm1,Fsm2

— вызовет событие с именем "EventName" для FSM с именами "Fsm1" и "Fsm2".

Когда параметр object задан, событие будет отправлено только в те FSM, которые применяются к игровым объектам, имеющим соответствующие имена, например:

@playmaker EventName object:Obj1,Obj2

— вызовет событие с именем "EventName" для всех FSM, которые прикреплены к игровым объектам с именами "Obj1" и "Obj2".

Вы также можете объединить параметры fsm и object для дальнейшей фильтрации FSM, которые должны получить событие.

# Глобальные переменные

В сценариях Naninovel можно получить доступ к глобальной переменной PlayMaker со следующими пользовательскими выражениями функций, доступными в пакете расширений:

  • GetPlayMakerGlobalVariable("variableName") — возвращает переменную простого типа (int, float, строка, и т.д.) c именем "variableName"
  • GetPlayMakerGlobalArray("variableName", arrayIndex) — возвращает значение, хранящееся в индексе "arrayIndex" массива переменной с именем "variableName"

К примеру, у вас есть целое число "Score" и глобальные переменные PlayMaker булева массива "FinishedRoutes" – вы можете использовать их в сценариях Naninovel следующим образом:

Felix: My score is {GetPlayMakerGlobalVariable("Score")}.

@if GetPlayMakerGlobalArray("FinishedRoutes",2)
    Third route (second array index) is completed.
@else
    Not yet.
@endif
Обновлено: 28 октября 2020 г.