Раніше ми підготували наш проєкт і розмістили необхідні активи для додатка. Крім того, ми визначили бажаний результат проєкту та спланували, як код гармонійно поєднається, щоб реалізувати наше бачення.
Першим кроком є створення Box Manager. Відповідно до нашого планування коду, Box Manager був центральною частиною нашого проєкту, тому це гарне місце для початку. Давайте створимо новий скрипт, який буде прикріплений до коробки в нашій сцені, і назвіть його “Box Manager”.
Скрипт Box Manager буде працювати, використовуючи рядки, які містять правильний порядок кольорів. Почнемо писати код у нашому скрипті, і першим кроком буде створення кількох змінних типу string
. Ми створимо змінну для правильного порядку кольорів дорогоцінних каменів, яка міститиме рішення. Інша змінна — введений порядок кольорів, що за замовчуванням буде порожньою.
До коробки прикріплена анімація, яка відкриває її. Коли рішення введено правильно, коробка відкривається. Тому створимо змінну типу Animator
, щоб мати змогу доступитися до анімації та відтворити її у потрібний момент.
Далі нам потрібно знати кількість дорогоцінних каменів у додатку. У моєму проєкті їх буде три, тому ми встановимо відповідну змінну в значення 3. Крім того, нам потрібно буде знати поточний камінь, значення якого збільшуватиметься щоразу, коли ми додаємо колір до наших рядкових змінних.
Тепер, коли ми маємо всі необхідні змінні для функціонування нашого додатка, почнемо створювати методи, які запускатимуть код і застосовуватимуть ці змінні.
Перший метод, який нам потрібен, буде публічним і відповідатиме за вибір дорогоцінного каменя. Щоразу, коли вибирається камінь, ми хочемо додати його колір до введеного порядку кольорів. Також ми збільшуватимемо значення змінної поточного каменя. Нарешті, порівняємо наш вибір з правильним порядком кольорів.
Це порівняння буде виконуватися в окремому методі, тому давайте створимо ще один метод для цієї функції. На цьому етапі ми повинні мати два порожні методи.
Тепер, коли основа Box Manager створена, давайте створимо новий скрипт для дорогоцінних каменів. У цьому скрипті нам наразі потрібна лише публічна змінна типу string
, яка визначатиме назву кольору каменя. Поки що залишимо цю змінну порожньою, оскільки кожен камінь матиме унікальну назву кольору.
Повертаємося до скрипта Box Manager і додаємо параметр до методу Gem Select, щоб передати інформацію про вибраний камінь до Box Manager. Після цього додаємо назву кольору з відповідного скрипта до введеного порядку кольорів.
Після цього збільшуємо значення змінної поточного каменя. Якщо значення поточного каменя дорівнює кількості каменів, ми порівнюємо порядок кольорів із правильним порядком.
Давайте продовжимо працювати над наступним методом, який ми створили раніше. У цьому методі ми будемо порівнювати рядки: якщо вони збігаються, коробка відкриється; якщо ні, то порядок буде скинуто.
Створимо нові методи, які визначатимуть, що станеться в умовах оператора if/else
, який ми створили. Якщо послідовність успішна, коробка відкриється.
Якщо послідовність не є успішною, дорогоцінні камені будуть скинуті.
Напишемо метод OpenBox(), який виконується, коли користувач успішно завершує послідовність. У цьому випадку ми хочемо відтворити анімацію, яка відкриє коробку та покаже приз усередині. Відповідно до Animator Controller, кришка коробки налаштована як тригер, і ім’я параметра – “Open”.
Щоб запустити анімацію в методі OpenBox(), нам достатньо викликати параметр тригера Set Trigger.
Після створення методу OpenBox(), перейдемо до методу ResetGame(). Коли послідовність рядків введена неправильно, ми хочемо скинути значення поточного каменя на нуль. Крім того, необхідно скинути поточний порядок кольорів дорогоцінних каменів і встановити рядок у порожній стан, як це передбачено за замовчуванням.
На цьому етапі Box Manager готовий. У майбутньому ми повертатимемося до нього для невеликих змін, але зараз він виглядає чудово.
До зустрічі наступного разу!
Перекладено з: AR in Unity-Magic Box: Part 1