Всем привет! Совсем недавно я написал систему диалогов для Unity и выложил ее на github. В этой статье я бы хотел рассказать о том как она работает, как ее использовать и что я планирую в дальнейшем добавить.

Установка

Чтобы получить dialogSystem вы можете скачать unitypackage или выкачать проект с github.

Описание

Скачав dialogSystem и открыв Default сцену перед вами появится фиолетовое окошко. Это просто заготовка для вывода основного текста диалога.
DialogPanel состоит из ползунка(scrollbar) и текста, так же есть UIмаска для обрезки текста который выходит за границу окна.
В папке Prefabs вы найдете заготовку с ответом - Answer.
Это обычная кнопка к которой прикреплен скрипт.

Детали

Теперь поговорим о скриптах.
Сразу скажу, что система получилась довольно простой и основывается на чтении из текстового файла.
Первый скрипт FileReader прикреплен к Canvas(тег Canvas).
FileReader состоит из полей:
Default Dialog File - имя файла который будет читаться первым (указывается без расширения).
Dialog Window Text - текстовый объект основного окна диалога (фиолетовая панель, в ней TextScroll и Text).
Answer Button - заготовка с кнопкой ответа (Prefabs -> Answer). Второй скрипт nextDialog прикреплен к Answer(тег Answer).
Canvas Answer
Объяснять код не вижу смысла, так как закомментировал все основные вещи.

Пример диалога:

First dialog file

Hi I'am Alex.
Hi I'am Tom. #->testText1

Second dialog file

How are you Tom?
Awesome possum! #->testText
All is bad... #->/end/

Все диалоги должны храниться в папке Resources(это сделано для того чтобы к файлам можно было обратиться, так как после сборки проекта, файлы переведутся во внутренний формат unity).
Resources
Первая строка - это текст который отображаеться в главном окне, если он будет слишком длинным он автоматически разобьется на другие строки.
Все следующие строки это ответы (пример: 5 строк в файле = 4 ответа) Ответ должен куда-то вести, обязательно ставьте указатель #-> затем имя файла или тег! Можно ставить пробелы перед указателем, после - нет!

Синтаксис:

Первая строка = текст главного окна
Последующие строки = каждая новая строка - ответ
после #-> = имя следующего файла с диалогом
\end\ после #-> = конец диалога, очистка всех ответов и текста главного окна

Планы
  • В дальнейшем планирую сделать динамический скроллбар, чтобы уменьшался и расширялся его размер в зависимости от количества текста.
  • Добавить исключения, во избежание ошибок.
  • Так же было бы неполохо создавать UI элементы окон и ответов прямо из скриптов, без использования заготовок.
  • Возможно typewriting эффект.
  • Больше тегов.