Управление именами, портретами и макетами в системе диалогов Unity
Содержание
- Введение
- Создание и управление именами NPC, портретами и макетами диалоговой системы
- Использование плагина Ink в Unity
- Создание системы диалога с выборами
- Использование тегов для добавления метаданных к строкам диалога
- Работа с тегами в Unity
- Установка имени и портрета говорящего в диалоговой панели
- Изменение макета диалоговой панели
- Работа с анимацией и макетами диалоговой панели
- Пример создания диалогового файла с тегами
- Обработка тегов в скрипте менеджера диалогов
- Создание анимаций и анимационных контроллеров для портретов и макетов
- Отображение имени говорящего и изменение портретов и макетов в диалоговой панели
- Сброс информации при открытии нового диалога
👤 Создание и управление именами NPC, портретами и макетами диалоговой системы
В этой статье я покажу вам простой и эффективный способ отображения и управления именами NPC, их портретами и различными макетами для диалоговой системы, которая была создана в Unity и использует Ink. В конце статьи мы создадим систему, в которой портреты и имена могут легко изменяться для каждой строки диалога, а также изменять макет панели диалога.
🎮 Использование плагина Ink в Unity
Для работы с диалогами в этом уроке мы будем использовать плагин Ink. Ink - это язык разметки для создания интерактивных историй, который позволяет нам описывать развитие диалога и принимать решения в нашей игре. Он имеет простой и понятный синтаксис, который можно использовать для создания диалоговых файлов. Если вы хотите узнать больше о том, как писать диалоги с помощью Ink, я помещу ссылку на видео в описании этой статьи.
🗣️ Создание системы диалога с выборами
В этой статье мы сосредоточимся на создании системы диалога с выборами, которая будет работать на основе файлов Ink. Преимущество использования файлов Ink в том, что они позволяют нам легко описывать диалоги и добавлять различные варианты ответов. Мы сможем контролировать диалог, основываясь на сделанных выборах игрока.
🏷️ Использование тегов для добавления метаданных к строкам диалога
Мы можем использовать теги для добавления метаданных к любой строке диалога. Каждый тег является строкой и может быть прочитан в Unity в виде ключа и значения. Теги позволяют нам определять действия, которые нужно выполнить в нашем скрипте на языке C#, а также передавать данные для этих действий. В этом уроке мы будем использовать теги для установки имени говорящего, портрета и макета диалоговой панели.
🎭 Работа с тегами в Unity
Когда мы получаем тег с ключом "speaker", мы устанавливаем значение тега в текстовое поле диалоговой панели. Это позволяет нам отображать имя персонажа, говорящего в текущей строке диалога. Аналогично, мы также используем теги для установки портрета и макета диалоговой панели. При чтении тега мы запускаем соответствующую анимацию, которая изменяет портрет или макет.
🖼️ Установка имени и портрета говорящего в диалоговой панели
Мы используем теги в коде менеджера диалогов Unity для установки имени говорящего в текстовом поле диалоговой панели. Тег с ключом "speaker" содержит значение имени, которое мы устанавливаем в текстовое поле. Таким образом, при каждой смене говорящего, мы обновляем имя в диалоговой панели.
🎨 Изменение макета диалоговой панели
Мы также используем теги в Unity для изменения макета диалоговой панели. Мы создаем анимационные контроллеры для каждого макета и используем метод Play, чтобы проиграть анимацию, соответствующую значению тега. Это позволяет нам легко изменять макет диалоговой панели в зависимости от смены говорящего.
🎞️ Работа с анимацией и макетами диалоговой панели
Мы используем анимацию и анимационные контроллеры в Unity для создания анимаций портретов и макетов диалоговой панели. Создав анимацию для каждого портрета и макета и добавив их в анимационный контроллер, мы можем легко управлять анимациями в зависимости от значений тегов.
📝 Пример создания диалогового файла с тегами
В качестве примера создания диалогового файла с использованием тегов, мы создаем файл "DrGreen". В этом файле у нас есть несколько тегов, которые определяют, кто говорит эту строку диалога, какой портрет использовать и какой макет панели диалога применить. Мы также используем теги для смены говорящего и изменения портрета и макета панели в диалоге.
⚙️ Обработка тегов в скрипте менеджера диалогов
В скрипте менеджера диалогов мы создаем константы для каждого тега, который мы хотим обрабатывать. Мы используем эти константы в нашем коде, чтобы ссылаться на ключи тегов. Затем мы добавляем код, который обрабатывает каждый тег в отдельности. Например, для тега "speaker" мы устанавливаем значение имени говорящего в текстовое поле диалоговой панели.
🔄 Создание анимаций и анимационных контроллеров для портретов и макетов
Мы используем анимации и анимационные контроллеры в Unity для создания анимаций портретов и макетов диалоговой панели. Каждому портрету и макету соответствует анимация, которую мы создаем в анимационном контроллере. Затем мы используем метод Play в коде для проигрывания соответствующей анимации в зависимости от значения тега.
🔄 Отображение имени говорящего и изменение портретов и макетов в диалоговой панели
Мы используем теги внутри кода менеджера диалогов Unity для отображения имени говорящего в текстовом поле диалоговой панели и изменения портретов и макетов. Мы также создаем переменные сериализованного поля для каждого компонента, которые мы будем изменять. Затем мы обновляем значения каждого компонента в зависимости от значения тега в диалоговом файле.
🔁 Сброс информации при открытии нового диалога
Мы сбрасываем информацию о говорящем, портрете и макете диалоговой панели при открытии нового диалога, чтобы избежать неправильного отображения информации и излишнего переноса информации между NPC. В этом уроке мы добавляем несколько строк кода, которые сбрасывают значения сериализованных полей в значения по умолчанию при вызове метода EnterDialogMode.
🎉 Вывод
В этой статье мы рассмотрели, как создать и управлять именами NPC, портретами и макетами для диалоговой системы в Unity с использованием плагина Ink. Мы научились использовать теги для добавления метаданных к строкам диалога и обрабатывать эти теги в нашем скрипте менеджера диалогов. Мы также создали анимации и анимационные контроллеры для портретов и макетов диалоговой панели.