# Поширені проблеми

### Текстури, рендеринг, візуальні ефекти

<figure><img src="https://692326379-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHQXwZlaJcLOU3SWyFBq3%2Fuploads%2FaXKbDYFnI1u43EzGWs4Y%2F_5a15fe55-bb49-4315-a1c2-6abde1785c5d.jpeg?alt=media&#x26;token=e9f01b3b-418e-4dfc-a872-2fecd7a47806" alt=""><figcaption></figcaption></figure>

⛔ Проблема: Фото не відображає світіння або інші ефекти камери, або не захоплює взагалі нічого. Виникає помилка: “RenderTexture. Create failed: colorFormat & depthStencilFormat cannot both be none”.

✅ Рішення 1: Знайдіть Scripts → PhotoSettings scriptable object та підберіть формат текстури зі списку, наприклад, DefaultHDR для ефекта Glow.

<figure><img src="https://692326379-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHQXwZlaJcLOU3SWyFBq3%2Fuploads%2Fzg3afmqbrR7HJQzuMito%2Fimage_2025-01-13_21-44-07%20(2).png?alt=media&#x26;token=30a355cb-ec9f-4eca-9b04-c55410874faa" alt=""><figcaption></figcaption></figure>

✅ Рішення 2 (через код): Відкрийте PhotoController.cs → MakeScrenshot(). Замініть рядок:

`targetTexture = RenderTexture.GetTemporary(photoSettings.resWidth, photoSettings.resHeight);`

на:

`targetTexture = RenderTexture.GetTemporary(photoSettings.resWidth, photoSettings.resHeight, 24, RenderTextureFormat.DefaultHDR);`

Або підберіть інший формат текстури, що підходить проекту. [Список усіх можливих](https://docs.unity3d.com/6000.0/Documentation/ScriptReference/RenderTextureFormat.html).

### UI, канвас, елементи інтерфейсу

⛔ Проблема: Кнопки/фото не реагують на взаємодію. Префаб PhotoController містить свій Canvas з UI-елементами, які можуть накладатися на існуючі або навпаки.

✅ Рішення: Розпакуйте префаб. Перемістіть вміст UICanvas до існуючого Canvas.

### Система введення

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcYoAZZvMFSKwBUtcgNDFG-2bTFATHM4VZXfAt0NI4i0m8iOU2yaiM86rkI_2EJVzvclSfqjyLvIUDt7fJtIzLIpGlSsQfd-Eitn76qSXhshk0rRDTCr3-BBzwO_GZ4I1246XFD-Q?key=z8IKZM9Z5B4qjdwJokf7bjl8" alt=""><figcaption></figcaption></figure>

⛔ Проблема: При використанні нової системи введення може з'явитися помилка: “InvalidOperationException: You are trying to read Input using the UnityEngine…”.

✅ Рішення: Встановіть inputSystemType → New у компоненті InputController. Edit → Project Settings → Player → Active Input Handling у значення "both". Імпортуйте InputSystem в проект через Package Manager. Замініть EventSystem → StandaloneInputModule на InputSystemUIInputModule.

### Демо сцена

⛔ Проблема: Матеріали у тестовій сцені не завантажуються належним чином.

✅ Рішення: Усі матеріали та текстури для демо сцени знаходяться у папці Materials і за замовчуванням використовують шейдер "Standard". Для проєктів на основі URP змініть шейдер на "URP/Lit" або будь-який інший сумісний.

### Розпізнавання об’єктів

<figure><img src="https://692326379-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHQXwZlaJcLOU3SWyFBq3%2Fuploads%2FC1pWYLfAkv7J3GzQsaJV%2F_5aadf21c-e54e-407b-a414-caa36a518406.jpeg?alt=media&#x26;token=058d875a-1c5c-4352-a6f9-95370f3ab8c4" alt=""><figcaption></figcaption></figure>

⛔ Проблема: Камера погано розпізнає об’єкти, особливо якщо є дрібні деталі або складні меші, які перекривають об’єкти. Наприклад, з цього ракурсу ключ перекривається мешем стійки.

✅ Рішення 1 (розпізнавати один точніше):  Збільшіть trigger collider потрібного об'єкта, щоб він не перекривався іншими і краще розпізнавався. Зменшіть значення Sphere Radius у Photo Settings. Чим менше значення, тим тонший промінь, що підвищить точність розпізнавання об’єктів. Додатково ви можете налаштувати логіку методу RaycastCheck у файлі PhotoController.cs, щоб вона краще відповідала вашим потребам.

<figure><img src="https://692326379-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHQXwZlaJcLOU3SWyFBq3%2Fuploads%2Fz0IB73AR8cu9zxM4xId8%2Fimage_2025-01-13_21-44-07%20(3).png?alt=media&#x26;token=7ea7a0a0-62fe-41aa-843b-edbed809aa4a" alt=""><figcaption></figcaption></figure>

✅ Рішення 2 (розпізнавати один точніше): призначте спеціальний Layer об’єктам, що заважають, і вимкніть його з розпізнавання в Raycast Layers у PhotoSettings. Або призначте спеціальний Layer розпізнаваному об’єкту та вимкніть усі інші Layers для розпізнавання.

✅ Рішення 3 (розпізнавати всі і шукати серед них один): Використовуйте режим Multiple Objects в Input Controller, встановіть більші значення Sphere Radius і multiplayerPrecision для точного розпізнавання кожного видимого об'єкта. Перевіряйте, чи фото містить потрібний об'єкт.

### Розділений екран

⛔ Проблема: У режимі розділеного екрана, де кожен гравець має власну фотокамеру, знімок може охоплювати лише чверть або половину екрана замість повноцінного зображення з однієї камери.\
✅ Рішення: тимчасово встановити viewport поточної камери на повний екран (0,0,1,1) перед зйомкою (можливо, також тимчасово вимкнути всі інші камери на момент знімка), а після цього — повернути попередні налаштування. Приблизно ось так:

```

private void MakeScreenshot()
{
    // Створіть render texture з цільною роздільною здатністю для фото
    var targetTexture = RenderTexture.GetTemporary(
        photoSettings.resWidth,
        photoSettings.resHeight,
        24,
        photoSettings.renderTextureFormat);
   
    // Збережіть початкові значення цілі камери (target) та області перегляду (viewport rect)
    var originalTarget = currentCamera.targetTexture;
    var originalRect = currentCamera.rect;
   
    // Встановіть камеру так, щоб вона рендерила текстуру
    currentCamera.targetTexture = targetTexture;
   
    // Важливо: для розділеного екрана потрібно тимчасово задати камері рендер повної текстури
    // Це ключове виправлення — встановлюємо камеру на рендер усієї текстури
    currentCamera.rect = new Rect(0, 0, 1, 1);
   
    // Відрендеріть зображення з камери в текстуру
    currentCamera.Render();
   
    // Поверніть початкові налаштування камери
    currentCamera.targetTexture = originalTarget;
    currentCamera.rect = originalRect;
   
    // Продовжіть виконання свого коду для обробки отриманої текстури
    // ...
}
```
