Основні компоненти
Last updated
Last updated
PhotoController.cs
Головний контролер, що керує процесами фотографування, сортування, збереження. Тут зберігаються референси на усі інші компоненти. Компонент не призначений для редагування, лише для читання. Сюди можна звертатися для отримання даних зі списків PinnedList та AllCards, які містять усі фотокартки на сцені. Містить 3 важливих референса для призначення:
Current Camera (камера на сцені, яка є джерелом знімка)
Photo Settings (scriptable object з налаштуваннями процеса фотографії)
Photo (префаб фотокартки з налаштуваннями дизайна)
Input Controller
Крос-платформна система введення з автоматичною конфігурацією для 2D/3D на десктопах та мобільних пристроях. Цей компонент не призначений для редагування. Містить публічне поле для налаштування системи введення. За замовчуванням система налаштована на старий Input Manager. Щоб повністю перейти на нову систему, виконайте наступні кроки:
Відкрийте Edit → Project Settings → Player → Configuration і встановіть Active Input Handling на New, якщо це ще не вибрано. Встановіть пакет Input System з Unity Package Manager, якщо він ще не встановлений. Встановіть EventSystem на InputSystemUIInputModule, якщо він ще не використовується.
У компоненті InputController встановіть inputSystemType на New.
Photo UI Manager
Відповідає за інтерфейс, взаємодію з фото, відображення галереї, візуальний фідбек. Тут зберігаються референси на UI елементи сцени. Їх можна заміняти на власні або редагувати. Наприклад, перемістіть об'єкт targetSquarePos на те місце на Canvas, куди буде візуально переміщатися для збереження щойно створений знімок (рамка). Якщо targetSquarePos не призначено, рамка буде анімуватися на місці знімка.
AudioController.cs
Містить логіку для програвання звуків під час фото та переміщення фотокарток.
DetectionVolumeManager.cs
Містить допоміжну логіку для розпізнавання фотографій.
PhotoSettings (scriptable object)
Містить режими для вмикання/вимикання: Multiple Mode (для розпізнавання кількох об’єктів замість одного), Duplication Mode (вмикає дублювання знятих об’єктів), 2D Mode (для дублювання 2D), Never Show Photo Description (щоб приховати описи), Record As Developer (для збереження фото як спрайтів також у редакторі).
Дозволяє налаштувати параметри фотографії:
Crop Width, Crop Height для вибору пропорцій фото
Render Texture Format і Depth для підбору візуальної якості фото
File Save Format для вибору способу запису текстури на диск
Sphere Radius відповідає за розмір області розпізнавання об’єктів (має співпадати з Crop-величинами, але може бути меншим для підвищеної точності)
multiplayerPrecision підвищує точність розпізнавання об'єктів у режимі Multiple Objects
Raycast Layers дозволяє обрати, об'єкти з яких слоїв повинні розпізнаватись
Size Configuration дозволяє регулювати розмір фотокарток (Card Pixel Height - висота фото в пікселях, стан спокою у колекції, стан утримання, стан прикріплення на дошку)
PhotoPrefab.cs
Контролює поведінку кожної фотокартки і містить референси на UI елементи кожної (кнопка повороту, видалення, hover-рамка, точка розташування описа). У самому префабі можна налаштувати положення кожного елемента відносно фотокартки.
Description Corner визначає, де відносно фотокартки буде її опис (точка Description Point). None дозволяє вручну виставити цю точку на фотокартці, але вона не буде вирівнюватись під різні розміри фото.
Description Offset - це розмір відступу між описом і фотокарткою в пікселях. Наприклад при Bottom, 10 опис буде під фотокарткою на 10 пікселів нижче.
Description Stretch відповідає за ширину і висоту опису. Це може співпадати з шириною або висотою фото, масштабуватися в залежності від множителя Width Multiplier та Height Multiplier. При None у описа завжди однаковий розмір.
Delete Button Corner визначає, де відносно фотокартки буде її кнопка видалення.
Rotation Button Corner визначає, де відносно фотокартки буде її кнопка обертання.
Frame Style містить спрайт, який використовується для дизайна рамки.
ObjectToPhoto.cs (що фотографувати)
Обов’язковий для об’єктів із користувацьким описом або можливістю дублювання. У інспекторі потрібно вказати PhotoController. Цей компонент можна додати до будь-якого об'єкта, щоб зробити його розпізнаваним на фото. Має поля для: Користувацького опису (опціонально), Можливості дублювання (опціонально), Унікального індексу для копіювання (обов’язково для дублювання).
PhotoDetector.cs (розпізнає що сфотографовано)
Обов’язковий для об'єктів, які повинні розпізнавати опис фотографії. Цей компонент можна додати до будь-якого об'єкта, який має валідувати опис фотографії, коли гравець перетягує її на нього. Має поле Required Photo Data для критеріїв опису. PhotoDetector.cs дозволяє редагувати власну логіку активації у методі OnActivate(), коли фотографії успішно проходять перевірку. Всередині є закоментовані шаблони для різних реакцій, наприклад, як перетягнути фото на об'єкт, і призначити йому таку текстуру як на фото.
PhotoInputBlocker.cs
Цей компонент можна додати до будь-якої кнопки, щоб уникнути випадкового фотографування під час кліка. У інспекторі потрібно вказати PhotoController.
UIElementChecker.cs
Цей компонент додається до будь-якої зони UI, щоб вона могла виконувати функції дошки або колекції для переміщення фото. Всередині є закоментовані шаблони для реакцій на перенесення фото на даний UI-елемент, подібно до об'єкта детектора з компонентом PhotoDetector.
ContiniousRotation.cs
Анімує об'єкти на демо-сцені, щоб продемонструвати як записується фото динамічних об'єктів.
CursorCam.cs
Відстежує введення, щоб анімувати момент фотознімка.
PhotoData.cs
Потрібен для збереження даних кожного фото.
SpawnPointer.cs
Потрібен для пересування об'єкта, який у режимі дублювання показує позицію, де буде створено копію сфотографованого об'єкта.
Photo Controller Editor
Допоміжний скрипт для зручного відображення кнопки та поля в інспекторі.