Глава 4. Больше кнопок!
На данный момент, в каждом шаге у нас всего лишь 1 кнопка. Игрок просто читает текст и жмет кнопку, чтобы перейти к следующему блоку текста. Согласитесь, несколько скучно получается. В этой микро-главе мы добавим больше кнопок, дав тем самым игроку выбор (например, «Да» или «Нет»). Игра же нам поволяет спокойно добавлять до 4 кнопок
Шаг 1. Откроем MyQuest.xml
Код в нашем файле:
<?xml version="1.0" encoding="UTF-8"?><quest npc="Wizard" title="Мой Первый Квест">ㅤ<step id="#start">ㅤㅤ<intro>Привет, как дела?</intro>ㅤㅤ<desc>Рад тебя снова видеть! Как дела?</desc>ㅤㅤ<option to="my_first_step" text="Норм"/>ㅤ</step>ㅤ<step id="my_first_step">ㅤㅤ<intro>Это хорошо, что хорошо. Пока, Наездник Дракона!</intro>ㅤㅤ<desc>Снова ты? Я занят, не могу говорить. Пока!</desc>ㅤㅤ<option to="#close" text="Пока"/>ㅤ</step>
ㅤㅤ<step id="#end"/></quest>
Как мы помним, кнопку мы добавляли с помощью <option _to=", где:" text="_">
to – куда ведет кнопка (на какой шаг)
text – текст на кнопке
Шаг 2. Добавляем кнопку
Пусть игрок в шаге #start может также ответить: «Плохо». Эта кнопка будет вести на шаг bad_mood_step
Для того, чтобы добавить кнопку, мы просто добавляем новый <option to="bad_mood_step" text="Плохо"> ниже:
ㅤ<step id="#start">ㅤㅤ <intro>Привет, как дела?</intro>ㅤㅤ <desc>Рад тебя снова видеть! Как дела?</desc>ㅤㅤ <option to="my_first_step" text="Норм"/>ㅤㅤ <option to="bad_mood_step" text="Плохо"/>ㅤ</step>
Шаг 3. Добавляем шаг bad_mood_step
Под шагом my_first_step добавим новый шаг bad_mood_step. Добавим ему пока что только <desc> и одну кнопку
В тексте <desc> напишем: Очень жаль! Крепись там. Удачи, Наездник Дракона!
В кнопке поставим грустный смайлик (эмотикон)
Код (обрезанный для понимания куда ставить):
ㅤㅤ<step id="#start">ㅤㅤㅤㅤ<intro>Привет, как дела?</intro>ㅤㅤㅤㅤ. . .ㅤㅤㅤㅤ<option to="my_first_step" text="Норм"/>ㅤㅤ</step>ㅤㅤ<step id="my_first_step">ㅤㅤㅤㅤ. . .ㅤㅤ</step>ㅤㅤ<step id="bad_mood_step">ㅤㅤㅤㅤ<desc>Очень жаль! Крепись там. Удачи, Наездник Дракона!</desc>ㅤㅤㅤㅤㅤㅤ<option to="#close" text=":("/>ㅤㅤ</step>ㅤㅤ<step id="#end"/>
Шаг 4. Первая проверка
Создаем нового тестового персонажа. перезаходим в мир и проверяем наш квест
Шаг 5. Дорабатываем новый шаг
Всё работает, но, как видите, теперь из-за того, что мы находимся на шаге bad_mood_step, Волшебник говорит одно и то же. Давайте это исправим, перенеся текст из в <desc><intro>, а оставшийся пустым немного передалем, чтобы Волшебник говорил, что занят, но в более “мягкой” форме<desc>
Было:
ㅤ<step id="bad_mood_step">ㅤㅤㅤ<desc>Очень жаль! Крепись там. Удачи, Наездник Дракона!</desc>ㅤㅤㅤㅤ<option to="#close" text=":("/>ㅤ</step>
Стало:
ㅤ<step id="bad_mood_step">ㅤㅤㅤ <intro>Очень жаль! Крепись там. Удачи, Наездник Дракона!</intro>
ㅤ ㅤ <desc>Понимаю, что тебе сейчас не хорошо, но у меня сейчас нет времени на разговоры</desc>ㅤㅤㅤ<option to="#close" text=":("/>ㅤ</step>
Шаг 6. Проверяем доработки
Выйдем из мира, зайдем с нового тестового персонажа в мир и проверим:
Отлично. Всё прекрасно работает
Как вы заметили, кнопки в коде идут сверху вниз (сначала «Норм», потом «Пока»). В игре кнопки заполняются слева на право (слева «Норм», справа «Пока»). Запомните это, если для вас расположение кнопок критично
Важно
В одном шаге может быть не больше 4 кнопок (которые с атрибутом text). Остальные просто не отобразяться
(Примечание: Количество авто-опций, которые мы рассмотрим позже, на этот лимит кнопок не влияют. Влияют только сами кнопки. Также у самих авто-опций никаких лимитов на количество нет)
Заключение
В этой главе вы научились добавлять больше кнопок, а также делать нелинейные квесты с выборами, что открыло возможности для проектирования более сложных сюжетов с выборами.
Мини-задание: Сделайте квест-загадку. Волшебник задает вопрос и дает 2 варинта ответа. Если игрок угадал, то переходит на шаг с похвалой, если нет – переход на шаг с текстом «Ха-ха, неправильно!». Кнопка в этом шаге возвращает на шаг с загадкой, чтобы игрок мог попробовать ещё раз
Итоговый код Главы
<?xml version="1.0" encoding="UTF-8"?><quest npc="Wizard" title="Мой Первый Квест">ㅤ<step id="#start">ㅤㅤ<intro>Привет, как дела?</intro>ㅤㅤ<desc>Рад тебя снова видеть! Как дела?</desc>ㅤㅤ<option to="bad_mood_step" text="Плохо"/>ㅤㅤ<option to="my_first_step" text="Норм"/>ㅤ</step>ㅤ<step id="my_first_step">ㅤㅤ<intro>Это хорошо, что хорошо. Пока, Наездник Дракона!</intro>ㅤㅤ<desc>Снова ты? Я занят, не могу говорить. Пока!</desc>ㅤㅤ<option to="#close" text="Пока"/>ㅤ</step>ㅤ<step id="bad_mood_step">ㅤㅤ<intro>Очень жаль! Крепись там. Удачи, Наездник Дракона!</intro>ㅤㅤ<desc>Понимаю, что тебе сейчас не хорошо, но у меня сейчас нет времени на разговоры</desc>ㅤㅤ<option to="#close" text=":("/>ㅤ</step>ㅤ<step id="#end"/></quest>
Отличный гайд, но осталось несколько вопросов:
1) Куда делся раздел с кастомным магазином из прошлой версии руководства. В 13.5.0? Его больше нельзя кастомизировать?
2) У Фуза в 13.5.0 есть свой магазин, следовательно, они тоже стали квестовыми НПС и для них можно делать кастомные квесты. Или нельзя?
1) Кастомные магазины полностью убраны (даже для Алхимика, Фуза и Крестьян). Теперь игра не будет подгружать квесты, содержащие в коде тег <store>
В логах будет писать:
Skipped custom quest ‘ИмяКвеста’ from file [Путь до XML-файла квеста]: NPC stores are not allowed in custom quests
UnityEngine.DebugLogHandler:Internal_Log(LogType, LogOption, String, Object)
UnityEngine.Logger:Log(LogType, Object)
UnityEngine.Debug:LogWarning(Object)
QuestManager:AddUserQuests(XmlSerializer, String)
d__77:MoveNext()
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)
2) Да, для Фуза можно теперь тоже делать квесты. Список Квестовых NPC только что обновил, просто изначально забыл добавить
Из нюансов: У них пока что нет своего портрета, поэтому будет видно просто имя