Avtosave
Обновления игр,  Пазлы

Новая функция в пазлах — автосохранение (и не только)

Захотелось внести ещё кое-какие новшества в пазлы. Но при их тестировании обнаружилось, что исправление в предыдущем крупном обновлении недостатка, когда берётся нижний элемент вместо верхнего, таки не полностью устранило эту проблему. Пришлось плотно заняться, в первую очередь, именно этим недостатком.

Устранение надоевшей проблемы

Для того, чтобы заняться выявлением причины, а потом, разумеется, и устранить её, пришлось очень долго разбираться. Не буду долго расписывать испробованные варианты. Ничего не помогало. Вся сложность оказалась в том, что все элементы были расположены на одном слое. Юнити своим лучом сканирования никак не могла определить, какой элемент расположен выше другого (они же на одном слое). Это было видно только визуально. Порядок расположения элементов на сцене так же никак не помогал это использовать. Вручную пройтись и всем назначить свой слой было не совсем правильным, так как при взятии элемента (далее при переносе и обязательно при отпускании) он должен был менять свой слой на самый верхний и ложиться поверх всех. То есть, это в любом случае надо было контролировать скриптом. И так могло быть «до бесконечности» — постоянно берётся и увеличивается счётчик слоёв. Наступит момент, когда таки будет достигнут максимум (как я выяснил, это 32 слоя, но возможно использовать до 32768, то есть, 32³ = 2¹⁵ = 32768 — не знаю, зачем я вам это говорю :-)).

Обновление уровня — рестарт

Поэтому решил добавить функцию рестарта/обновления разбросанных элементов пазла на доске, чтобы можно было проще это контролировать и тестировать. Добавил соответствующую кнопку в меню:

Reset3

Теперь, при старте пазла (или нажатии на кнопку сброса), все разбросанные элементы:

  • перемешиваются случайным образом
  • каждому присваивается свой слой
  • переназываются уникальными именами для внутреннего использования

Так же встроил защиту от перехода до максимального номера слоя — всё сбрасывается и слои присваиваются каждому элементы заново с самого начала в соответствии с их текущим значением расположения. Что происходит абсолютно незаметно для пользователя.

Для внедрения такого функционала пришлось снова «плотно» поработать со всеми элементами всех своих пазлов — снова повторюсь:

  • Котята: 6х6=36 в каждом пазле, 36*18=648 во всех 18 пазлах
  • Каньоны: 8х14=112 в каждом пазле, 112*16=1792 во всех 16 пазлах
  • Париж: 10х18=180 в каждом пазле, 180*16=2880 во всех 16 пазлах

Итого: 5320 элементов. Только представьте!

Random

Автосохранение

Ещё одно немаловажное новшество в наших пазлах. Правда, более востребованным оно может быть при сборке больших пазлов.

Внедрена функция автосохранения недособранного пазла:

  • при каждом перемещении любого элемента пазла
  • при выходе из любого пазла

Возможности автосохранения

1. Вы в любой момент можете выйти из собирания любого пазла, как и ранее.

2. При следующем открытии такого пазла вы просто продолжите его собирать как-будто и не выходили из него. Сохраняются:

  • все элементы пазла — будут на прежних местах, как вы их оставили
  • настройка громкости
  • настройка яркости

3. Причем, сохраняются ВСЕ пазлы в таком состоянии, в котором вы их оставили — не только последний, из которого вышли.

4. Время, затраченное на сбор пазла, так же остановится (сохранится) и продолжится с момента следующего открытия данного пазла.

Изменение яркости

По пожеланиям некоторых пользователей встроил функцию регулировки яркости экрана.Avtosave2

Влияет на всё отображение всего, что выводится на экран. Но имеется несколько уточнений:

  • можно настраивать для каждого уровня отдельно (там, где есть данная кнопка)
  • не влияет на саму всю игру (!)
  • ограничена минимальная яркость (защита от дурака, извините :-))

Доработка меню

После всех этих дополнений функционала изменилось само меню в каждом пазле:

Menu