Диалоги на Unity3D
Здравствуйте, посетители форума, начинающие, а так же продвинутые программисты. Сегодня я хотел поделиться с вами своей простенькой системой диалогов. Сейчас объясню принцип работы, а с самими скриптами, можете ознакомиться на GitHub https://github.com/Walperr/Dialogs-On-Unity3D
Суть достаточно проста, мы загружаем записи из XML файлов и сортируем их по элементам наших массивов, которые в свою очередь, уже будут отображаться на экране в качестве диалогов. Работает это по вот такой вот схеме
Выглядит просто, однако основной сложностью было как раз то, что НПС переводил нас на несколько возможных фраз от игрока. Если в XML файле у нас все фразы, от НПС стоят по порядку друг за другом, и вызываются по их порядковому номеру, то с фразами игрока все немного иначе. В файле они находятся так же по порядку, но имеют атрибут, который определяет к какому блоку относится эта фраза. В итоге сам файл, хранящий в себе фразы будет выглядеть примерно с такой структурой.
Вроде все просто, каждая сказанная фраза НПС дает возможность сказать фразы, относящиеся к какому-то блоку, каждая фраза из блока, заставляет сказать соответствующую ей фразу от НПС. Есть еще один аспект, который хотелось бы упомянуть. Ветки диалогов, в которые нам не попасть из основного дерева, они как правило открываются после каких-то событий в игровом мире. Примеров я приводить не стану, думаю вы и сами придумаете кучу.
Реализовал я это так: я прописал еще пару фраз отдельно и пометил их, у них, как и у фраз НПС только один атрибут, они не идут блоками, а одиночными фразами, хотя можно добавить несколько фраз из одного события. Они будут переводить нас на фразы НПС, которые как и ранее будут переводить нас на те же блоки с фразами игрока. Это те же ветки диалогов, просто входим мы в них сторонними фразами, которые активируем после какого-то события в мире игры. Что же, это основной принцип создания системы диалогов для вашей игры. Ознакомиться с исходником вы можете на гитхабе по ссылке https://github.com/Walperr/Dialogs-On-Unity3D
К сожалению не было времени дописать расширение для редактора юнити, чтобы удобнее настраивать сами диалоги, поэтому все делается в ручную в самом файле. Редактирование самого исходника и дополнение приветствуется. Может кто-то и сделает это окошко для редактирования диалоговых деревьев.