Найти в Дзене

Чубрик и яйца. Часть 8 "Работаем с рекордами"

Вся ниже представленная информация есть в Телеграмм и доступна всем по ссылке t.me/ded63russtudio
В ближайшее время данный канал в Дзене поддерживаться не будет!
Настоятельно рекомендуем воспользоваться указанной ссылкой... Ранее были рассмотрены:
Часть 1 "Запуск и Канвас", https://dzen.ru/a/ZU51Wf4lWB2MYXlG?referrer_clid=1400&
Часть 2 "Игровые элементы", https://dzen.ru/a/ZVIckxHuJl5sFftG?referrer_clid=1400& Часть 3 "Управление персонажем и игровыми элементами", https://dzen.ru/a/ZVjZIx4b0UGtAExF Часть 4 "Статистика игры" https://dzen.ru/a/ZXSgh7UrMW9CkKD8 Часть 5 "Скрипты и все такое... Первая серия" https://dzen.ru/a/ZXSj8glxh1EgbI0y Часть 6 "Скрипты и все такое... вторая серия" https://dzen.ru/a/ZXSpUWq6Wy127Asz Часть 7 "Создаем уровни игры" https://dzen.ru/a/ZYXZJE-zbymZtS6v Уже по известной методике копируем все содержимое Иерархии четвертого уровня за исключением названия и MainCamera и вставляем в Иерархию сцены Finish
Теперь по совету великого скульптора отсекаем все лишнее,

Вся ниже представленная информация есть в Телеграмм и доступна всем по ссылке t.me/ded63russtudio
В ближайшее время данный канал в Дзене поддерживаться не будет!
Настоятельно рекомендуем воспользоваться указанной ссылкой...

Ранее были рассмотрены:
Часть 1 "Запуск и Канвас",
https://dzen.ru/a/ZU51Wf4lWB2MYXlG?referrer_clid=1400&
Часть 2 "Игровые элементы",
https://dzen.ru/a/ZVIckxHuJl5sFftG?referrer_clid=1400&

Часть 3 "Управление персонажем и игровыми элементами", https://dzen.ru/a/ZVjZIx4b0UGtAExF

Часть 4 "Статистика игры" https://dzen.ru/a/ZXSgh7UrMW9CkKD8

Часть 5 "Скрипты и все такое... Первая серия" https://dzen.ru/a/ZXSj8glxh1EgbI0y

Часть 6 "Скрипты и все такое... вторая серия" https://dzen.ru/a/ZXSpUWq6Wy127Asz

Часть 7 "Создаем уровни игры" https://dzen.ru/a/ZYXZJE-zbymZtS6v

Уже по известной методике копируем все содержимое Иерархии четвертого уровня за исключением названия и MainCamera и вставляем в Иерархию сцены Finish

Теперь по совету великого скульптора отсекаем все лишнее, что тут нам не надо:
Удаляем из Иерархии папки Lotoks, Player и элемент TachZone
Из папки Buttons ликвидируем кнопку Next
Из папки Canvas убираем PanelUp, PanelDown, Image, Zadacha
Из папки BackGround убираем Ground
Иерархия теперь выглядит примерно так

Из оставшейся папки Stats убираем элемент Ramka, растягиваем и позиционируем элемент Panel как-то так

-2

Все, что связано с часами в мусор, элемент TextResultStat тащим наверх, а его численное значение тоже в корзину...
Заодно сразу сместим две оставшиеся кнопки вниз экрана

-3

Да, и элемент Manager нам тоже в упор не нужен - удаляем.

Нормально отрихтовали, теперь надо немного допилить.
Что хотелось бы видеть в финальной статистики игры Пользователю?
Итоги игр по всем уровням - то есть:
*** Текущий результат каждого уровня и соответственно Рекорд уровня
*** Анти-результаты и антирекорды по потерянным яйцам, как вариант
Это, так сказать, самый минимум, дабы не лезть в аналитические подсчеты...
Можно, конечно заморочиться с результатами в привязке ко времени игры, но это уже факультатив, которому тут места нет.

Начнем...
Сначала слово "Результат" заменим на, например, "Итоги уровней"

-4

Затем для красивости нужна своего рода таблица, которую можно сформировать двумя путями: использовать подходящий спрайт или воспользоваться Canvas / UI / Panel, отформатировав этот элемент по своему вкусу и, размножив, расставить по местам.
Я так и поступил

-5

Смысл в следующем: в верхней части будут результат и рекорд по пойманным яйцам, в нижней части все то же самое, но уже по потерянным.
Стало быть надо сделать соответствующие надписи

-6

Далее надо указать уровни и расставить по местам пока пустые значения рекордов и результатов. Типа так

-7

Тут самое главное - дать оригинальные и понимаемые имена всем элементам, особенно тем, что Score - в противном случае дальше легко запутаться!

Собственно, площадка готова.
Теперь нужны скрипты, скрипты и еще раз скрипты...

Если мы обратимся к уровням игры, то увидим, что при победе в статистике уровня фиксируется все, кроме результата и рекорда.

Начнем с результата игры на первом уровне.
Пишем новый скрипт Result

-8

-9

-10

и вешаем его на элемент Canvas / Stats, после чего настраиваем...
Заполняем поля путем перетаскивания из Инспектора нужных элементов:
Cloks - тут понятно, папка Clock
EggBaxS - Ground из BackGround
Lovilk - соответственно Lovilka из Player
ResObject - ScoreResultatStat из Stats
Record - ScoreRecord из PanelDown

Запускаем игру, ловим яйца, для чистоты проверки пару яиц роняем, побеждаем и читаем окно статистики

-11

Статистика уровня работает исправно.
Кстати - а как она работает?
Считаем поймайные яйца, минусуем потерянные, высчитываем время в секундах, что потрачены на игру и оставшиеся в целлости и сохранности пойманные яйца делим на время игры. Результат всегда ниже нуля, поэтому умножаем его на 1000.
Этот результат и будет отображаться.

Теперь этот скрипт следует повторить для второго уровня с именем Result_2, но в скрипте внести некоторые изменения. Для поиска изменений транслирую весь скрипт Result_2 - найдите отличия... и они есть, хоть и незначительные, но очень важные!!!

-12

-13

-14

повесить на элемент Stats второго уровня игры!!!
И естественно настроить и проверить работоспособность...

Ну и повторить для остальных с именами Recult_3 и Result_4, заменяя уже известные элементы строк (RecordS2 на RecordS3 и ResultaT2 ResultaT3 для скрипта Result_3), ну а для Result_4 уже и так все понятно...
Зачем? К этим скриптам с записанными данными будет обращаться финальный скрипт статистики для фиксации данных в сцене Finish
Да, и не забудем развесить эти скрипты на элемент Stats каждого соответствущего уровня с нужной настройкой.

В дополнении следует проверить настройки скрипта Stat Level на элементе Manager на всех уровнях на полностью заполненные поля скрипта спавнов!!!

Далее, перейдем к позиции Рекорд. Пишем скрипт Record

-15

и вешаем его на элемент ScoreRecord в PanelDown на 1 уровне.
Вот удача! Ничего в скрипте настраивать не надо...
Тестируем уровень и видим, что рекорд записан и пока не превзойден, так и будет иметь одно и тоже значение.

Повторяем процесс для остальных уровней с созданием скриптов с именами Record_2, Record_3 и Record_4
Все тоже самое, как для скриптов результатов.
Тестируем все уровни на срабатывание статистики...

Зачем такие трудности?
В кажом из последних восьми скриптов записаны уникальные имена, к которым будет обращаться финальный скрипт. Конечно, все можно объеденить в один скрипт, но я не сторонник подобных действий - с каждым отдельным скриптом всегда разобраться легче, чем с одним на 500 строк...

Итак, подходим к финалу этой скрипто-гонки. Остается всего чуть-чуть.

Первыми будут ResultFin_1 и RecordFin_1

-16

-17

Как видно они не сильно отличаются друг от друга... и это хорошо!!!
Вешаем их соответственно в сцене Finish на элементы
сюда

-18

Рекорд, сюда

-19

Результат... Это про первый уровень!Результат... Это про первый уровень!

Далее идет копирование скриптов ResultFin_1 и RecordFin_1 с именами ResultFin_2 и RecordFin_2 c заменой в них ResultaT на ResultaT2 и RecordS на RecordS2
Затем эти скрипты вешаются на элементы второго уровня, ну как в первом...

Повторяем этот процесс на третьем и четвертом уровнях.
Нудное занятие, спору нет, но надо...

Стартуем с первого уровня - я надеюсь, что число яиц для победы у вас не слишком большое - побеждаем везде, запоминаем результаты тоже везде и выходим в сцену Finish, где сравниваем результаты, после чего повторяем процесс тестирования с первого уровня.

Результаты просто обязаны быть другими!
Сравниваем что было и что стало - работает!!!

Не хватает для чистоты эксперимента, да и для Пользователя будет полезно, - кнопки "Сброс рекордов". Надо сделать...

В папку Sprites закидываем нужный спрайт кнопки, переносим спрайт на сцену, даем имя RecordOut, форматируем и располагаем внизу там, где был Рекорд и добавляем компонент CircleCollider2D.
Затем в канвасе создаем надпись "Сбросить Рекорд".
Как делать - вот так

-20

Это типо домашнее задание - угадай, как это сделать!

Теперь нужен скрипт для этой кнопки, назовем его RecordOut

-21

Вешаем его на созданную кнопку, добавляем звук нажатия.
Запускаем сцену Finish и видим на ней результаты и рекорды, жмем на кнопку сброса и видим, что рекорды остались!!!
Волноваться нет причин - при старте первого уровня рекорд будет обнулен.

Более того, при старте игры с первого уровня при нулевых рекордах после прохождения уровней в сцене Финиш будут отражены только рекорды, потому, что после первого прохода игры они эквиваленты результатам.
При повторном проходе игры без сброса рекордов рекорд уровня будет отображен на своем месте и в сцене финиш будут еще и результаты уровней.
При третьем прохождение без сброса рекорд уровня будет отображать новый рекорд, если таковой случился.

На этом Часть 8 можно закончить.
Остается сбилдить игру для Андроида и обсудить возможные улучшения игры.

Однако, для экономии времени рассматривать процесс билдинга мы тут не будем - весь этот достаточно непростой процесс красочно описан
https://dzen.ru/a/ZD6sHovHRBu5sepI и нет смысла повторяться...

А, вот улучшения игры стоит обсудить.
1. Как видно в финишной статистике нет ничего по разбитым яйцам - там все тоже самое, что и пойманным, поэтому при желании вы сможете повторить процесс. Можно упростить статистику, убав привязку результата по времени
2. Настройки игры:
* можно при старте предложить Пользователю три режима (хард, медиум и лайт). Это выполняется путем настроек спавнов лотков по частоте срабатывания и типу падающих элементов. При лайте, например, можно не использовать шарики, а оставить только снежки и яйца и увеличить время срабатывания спавнов. При медиуме - добавить уже шарики и уменьшить время спавнов. При харде закрутить все гайки на полную катушку - пусть пользователь радуется...
Еще можно поменять количество пойманных яиц для победы.
* добавить фоновую музыку и сделать контроль над всеми звуками в игре
3. Естественно можно увеличить количество уровней, ну еще минимум на пару - габариты элементов вполне это позволяют...

Наверное, этого уже достаточно.
Будут вопросы - обращайтесь! Всегда готов помочь совершенно безвозмездно!!!

До следующих игр, Создатели!!!