[Перевод] Создание визуальных новелл в Unity: Naninovel 1.20
Naninovel — ассет для Unity, позиционируемый как движок для создание визуальных новелл.
За своё недолгое (относительно других похожих решений) существование, он успел обзавестись фанатской базой и пройти не малый путь разработки. Каждая последующая версия — большая работа над исправлениями и новыми возможностями. А самое главное: Naninovel занимается наш соотечественник. Однако движок популярен и на зарубежном пространстве, в том числе за свою гибкость, одновременную простоту и глубину разработки и возможность отдельного использования встроенных компонентов.
Скоро автор обещает выпустить 1.20 версию, в которой будет много новых фич и не только.
В этой статье перевод и небольшой разбор чейнджлога.
Поддерживает Unity 2022.3.45 - 6
. Рекомендованная — 2022.3.45
.
Имена скриптовых файлов более не обязаны быть уникальными. Теперь на скрипты можно ссылаться по локальным путям:
@goto Prologue/Day1
Больше не требуется указывать сборки для кастомных типов.
Nani теперь можно установить как UPM пакет.
Live2D and Spine extension теперь являются частью Nani, так что более не потребуется устанавливать их отдельно.
Улучшена инициализация движка за счёт кэширования.
Стоит сделать пометку: движок Nani инициализируется некоторое время, в том числе подгружает сервисы и встроенные/пользовательские UI.
Ресурсы сценариев теперь загружаются по требованию, а не заранее.
Отличная фича, которую ждал уже давненько, потому как в случае, если сценарист не разбил сценарий на более мелкие скрипты, особо большие фрагменты сюжета могли подгружаться несколько дольше.
Опция Label By Scripts
, связанная с использованием ресурсов и оптимизации их загрузки. [doc]
Прогресс чтения теперь не расходует излишние ресурсы, поскольку данные кешируются во время сборки. Опция Count Total Commands
теперь включена по умолчанию.
Добавлена опция @Remove Actors
(используется по умолчанию автоматически), которая удаляет неиспользуемых актёров и связанные ресурсы при выгрузке ресурсов сценария. [doc]
Актёром в nani называются такие участники сцены как персонажи и фоны.
Полезная фича, так как раньше в определённых ситуациях нужно было убирать актёров самостоятельно, например при помощи @remove
параметра некоторых команд.
У меня такая потребность возникала в многослойных персонажах (с отдельной render камерой, учитывая особенности Unity и Nani) с кастомной реализацией моргания.
Async Instantiation
как дефолтная настройка инициализации движка, чтобы перенести нагрузку из основного потока.
Generic, Live2D and Spine actors теперь поддерживают применение нескольких образов. [doc]
Join Lines
утилита, позволяющая хранить общие строки в одной строке [doc]
Аннотации внутри документов по локализации теперь также включают суть переведенного контента [doc]
В команду @choice
добавлен параметр @lock
, позволяющий заблокировать/отключить выбор. [doc]
Соответственно один из многих вариантов использования: подвязать @lock к какой-либо переменной или предыдущим выборам.
Auto Detect Locale
опция для определения локали при первом запуске игры. [doc]
Добавлено приглашение продолжить ввод для отображения нумерации страниц.
Экземпляры многоуровневых префабов актеров теперь вложены в связанный игровой объект актера; это добавляет поддержку поведения, которое зависит от преобразования объекта, например освещения, интерактивных пятен и т. д.
К слову, персонажи в Nani реализованы не через Sprite Renderer
, а используют юнитовский Graphics.DrawMesh
для рендера. Что помимо плюсов может нести и некоторые неудобства. Например, невозможность выставить sorting layer
у персонажа, отличный от default
, что привело в моём случае к перекрытию партиклов на generic-фоне.
Опция Camera Mask
, позволяющая указать дополнительные слои камеры, которые необходимо сохранить при рендеринге актера; используйте для поддержки функций рендеринга, для которых требуются специальные слои камеры, такие как 2D Light Unity
.
В конфигурацию персонажа добавлен параметр Has Name
[doc]
Если этот параметр отключен, ни отображаемое имя, ни идентификатор актера не будут отображаться в пользовательском интерфейсе принтера. Полезно для персонажей типа диктора со связанными принтерами.
Добавлена возможность предоставить шрифт с локализацией сообщества (да, Nani поддерживает опцию локализации сообществом, вместо взлома). [doc]
Добавлен Separator Literal
во встроенный UI с подсказками. Позволяет изменять символ, используемый для разделения заголовка, категории и текста подсказки в управляемых текстовых записях.
Добавлен Selected Prefix
во встроенный UI с подсказками. Позволяет изменить префикс разблокируемого идентификатора, как указание того, что префикс был просмотрен хотя бы раз.
TipsPanel.HasUnselectedItem()
метод во встроенном UI с подсказками. Позволяет проверить содержит ли панель невыделенные элементы
Добавлен Build Resources
эдитор, чтобы создавать связанные с Nani сборки.
Добавленlazy
флаг к командам @char
, @back
, @camera
, @slide
чтобы не завершать их в случае пропуска текста.
Полезная фича, которую давно хотели увидеть. Поможет создавать более плавные, асинхронные анимации.
Добавлен способ создания идентифицированных текстовых ссылок путем добавления &
к идентификатору. [doc]
Добавлена возможность указать псевдоним и документацию для пользовательских expression
функций.
Параметры функции числового выражения больше не ограничиваются значением double
Play SFX While Skipping
опция для звуков. Отвечает за проигрыш звука при скипе.
Добавлен as
параметр в команду @print
. Позволяет установить собственную метку имени; в сочетании с параметром author
, теперь обрабатывает несколько авторов (разделенные знаком ,
) [doc]
Добавлен способ включения выражений сценария в документы локализации и принудительной повторной оценки при изменении локали. [doc]
Добавлен корректный обработчик отсутствующих шрифтов: предупреждение регистрируется, и вместо выдачи исключения используется шрифт по умолчанию.
Добавлен @block
параметр в команду @movie
, чтобы блокировать взаимодействие игрока во время воспроизведения видео, в том числе предотвратить пропуск.
Добавлен SkipMovie
input binding, привязанный к пропуску видео, (раньше за это отвечал Cancel
бинд).
Добавлена отдельная команда @remove
для удаления актеров. [doc]
Раньше это был параметр к другим командам.
Добавлено опция Support Custom Opacity
для эффекта исчезновения текста; при включении эффект будет учитывать теги
и ограничивать максимальную непрозрачность при полном раскрытии за счет некоторых затрат на производительность.
Добавлен type
параметр в команду @input
указать тип значения вводимой переменной.
Include Author To Backlog
опция текстовых принтеров, позволяющая не включать автора в backlog
(встроенный UI, хранящий историю сообщений). Выключено по умолчанию для Fullscreen
-принтера.
Scene Path Root
опция в настройках бэкграунда, позволяющая изменить корневой каталог ресурсов сцены, связанных с внешним видом актера.
Движок теперь имеет собственный парсер CSV и больше не зависит от сторонней библиотеки.
К слову Nani вместо стандартного DOTween
использует свою собственную реализацию.
Некоторые улучшения для IDE (VS code)
Да, Нани обладает собственным расширением для VS code с подсветкой скриптового языка и кастомных команд. Также имеется web-версия для написания скриптов.
Habrahabr.ru прочитано 12476 раз