Використовуйте візуалізацію текстур для відображення вмісту іншої сцени як текстур
Середовище перевірки
- Вікна
-
- вікна 11
- Редактор єдності
-
- 2021.3.3f1
- Пакет системи введення
-
- 1.3.0
Передумови для цієї поради
Наступні настройки були зроблені заздалегідь як передумова для опису цієї поради.
Спочатку
Візуалізація текстур дозволяє записувати малюнки на текстуру, а не на екран. Це дозволяє вільно генерувати текстури під час виконання гри без попередньої підготовки текстурних зображень.
Ви також можете записати текстуру візуалізації, яка динамічно змінює кожен кадр, наприклад, щоб проектувати інше зображення з основної камери на дисплей, який існує в грі.
Підготовка зображень
При використанні текстури візуалізації не потрібно готувати зображення, але ви можете підготувати його як зразок, щоб результат малюнка був більш легким для розуміння.
Створення текстури візуалізації
Створіть об'єкт із проекту. У меню "Створити" виберіть "Візуалізувати текстуру".
Назва може бути довільним. Оскільки ім'я в цей час не вказується безпосередньо ззовні, NewRenderTexture
залиште як .
Виділіть текстуру візуалізації та вкажіть її розмір в інспекторі. Оскільки текстура візуалізації є областю малювання, необхідно вказати розмір. Цього разу я хочу написати сцену, створену окремо, тому я встановив співвідношення сторін 16:9.
Встановлення цілі візуалізації текстури
Виберіть «UI» > «Raw Image» з ієрархії сцени, яка спочатку створюється. Відображення вмісту текстури візуалізації в цьому об'єкті. Це об'єкт інтерфейсу користувача, але вам потрібен компонент "Raw Image", який можна встановити на інший об'єкт.
Розміщено RawImage. Оскільки це об'єкт інтерфейсу користувача, він розміщується на полотні. Я ще нічого не встановлював, тому просто отримую білий прямокутник.
Ми хочемо, щоб масштаб дорівнював один одному, тому встановлюємо розмір об'єкта RawImage таким же, як текстура візуалізації. Якщо зберегти пропорції незмінними, результат креслення буде масштабовано, навіть якщо ви зміните розмір, але якщо змінити пропорції, результат креслення буде розчавлено вертикально або горизонтально.
Компонент "Необроблене зображення" об'єкта RawImage має "текстуру", тому встановіть там щойно створену текстуру візуалізації. Вміст текстури візуалізації все ще порожній, тому він прозорий у вигляді.
Створення сцени візуалізації текстури малювання вмісту
Далі створіть нову сцену, щоб створити вміст, який буде намальований у текстурі візуалізації. Виберіть у меню "Файл" і виберіть "Нова сцена".
Оскільки цей зразок є 2D, ви також виберете 2D-сцену.
Створіть його в папці Scene. SampleSceneTexture
Залиште ім'я як .
Після створення сцени розмістіть об'єкти відповідним чином. Все, що вам потрібно зробити, це переконатися, що ви знаєте вміст текстури візуалізації. Для того, щоб підтвердити, що все, що виступає за межі камери, не намальовано, біля кадру камери також розміщують спрайт.
Якщо об'єкти накладаються, контекст об'єктів буде невизначеним, тому, якщо у вас є фон, зменште порядок фонових шарів.
Після вибору «MainCamera» встановіть текстуру візуалізації в «Цільова текстура». Це призводить до того, що малюнок малюється в текстурі візуалізації.
Видаліть компонент Audio Listener, встановлений на MainCamera. Все, що вам потрібно для текстури візуалізації, це малювання, тому вам не потрібен Audio Listener. Попередження відображатиметься, якщо під час виконання є кілька «аудіослухачів».
До речі, якщо запустити сцену для рендера текстури в такому стані, на екрані нічого відображатися не буде. Це тому, що ви малюєте на текстурі візуалізації. Якщо ви хочете перевірити це на екрані, видаліть «цільову текстуру», а потім запустіть її.
Налаштування шару
У цьому зразку вам доведеться переміщати дві сцени одночасно, але якщо ви перемістите їх такими, якими вони є, вміст, який потрібно намалювати в текстурі візуалізації, також буде відображатися на головному екрані, тому шари не будуть намальовані окремо.
Спочатку виберіть «Редагувати шар» з шару в правому верхньому кутку редактора.
Назва і розташування довільні, але тут ми додамо новий RenderTarget
шар з ім'ям .
Після додавання шару відкрийте сцену для текстури візуалізації, виділіть усі об'єкти, які ви бажаєте намалювати, і змініть значення шару на щойно створене RenderTarget
.
SampleSceneTexture
На цьому редагування сцени завершиться, тому, будь ласка, збережіть її.
Відображення візуалізації текстур
SampleScene
Відкривши сцену, додайте її до ієрархії SampleSceneTexture
, перетягнувши її.
Потім в ієрархії має бути дві сцени, а вміст сцени має відображатися на екрані SampleSceneTexture
.
SampleSceneTexture
Вміст сцени тривожний, тому клацніть піктограму ока сцени з SampleSceneTexture
ієрархії.
SampleSceneTexture
Це приховає об'єкти в сцені, і буде видно лише вміст сцени SampleScene
.
До речі, оскільки всі параметри текстури візуалізації завершені, вміст текстури візуалізації має відображатися на необробленому зображенні,SampleScene
розміщеному в сцені.
Однак іконка приховування оком - це лише настройка, яка робить її невидимою в редакторі, тому якщо запустити SampleSceneTexture
гру як є, вміст сцени також буде відображатися на екрані.
SampleScene
Потім виберіть Сцена Main Camera
та зніміть прапорець З RenderTarget
маски вибракування в ІнспекторіCamera
.
Це запобігає відображенню об'єктів на шарі під час RenderTarget
запуску гри.
Спробуйте запустити гру. Він повинен виглядати за призначенням.
Спробуйте перемістити текстуру візуалізації
Однак у цьому стані важко зрозуміти, чи дійсно він працює як текстура візуалізації чи просто відображає зображення як обрізання, тому давайте перемістимо його.
Вміст може бути будь-яким, але тут ми задамо рух для автоматичного обертання спрайту. Створіть сценарій SelfRotate
і створіть його як .
Тут ми включимо простий процес обертання потроху.
using UnityEngine;
public class SelfRotate : MonoBehaviour
{
// 更新はフレームごとに 1 回呼び出されます
void Update()
{
transform.Rotate(0, 0, 0.1f);
}
}
Після створення сценарію прикріплюйте все більше і більше до об'єкта, який потрібно повернути.
Потім запустіть гру і подивіться, чи закрутиться вона. Я думаю, ви можете побачити, що об'єкт рухається в текстурі візуалізації.
Переміщення кількох сцен одночасно
Тут ми створили простий приклад, щоб у нас було дві сцени, що йдуть з самого початку, але в реальній грі є багато випадків, коли вам доводиться починати з однієї сцени. У такому випадку я думаю, що вам доведеться динамічно додавати сцени на початку сцени, щоб зробити її кількома сценами.
Будь ласка, зверніться до розділу "Додавання сцени", щоб дізнатися, як додати сцену.
В основному SceneManager.LoadScene("<シーン名>", LoadSceneMode.Additive);
дзвінки повинні вирішити більшість проблем.
Як запобігти появі вмісту текстури візуалізації на головному екрані без використання шарів
Вміст текстури візуалізації відображається на головному екрані, оскільки основна сцена та сцена текстури візуалізації знаходяться в одному місці. Тому, якщо перемістити вміст текстури рендера в місце, яке ніколи не показується в основній сцені, воно не буде відображатися на головному екрані. Наприклад, ви можете перемістити об'єкт візуалізації текстури або камеру в місце (-10000, -10000). Таким чином, налаштування шару не потрібні.
Якщо потрібно завершити вміст текстури візуалізації в одній сцені, не розділяючи її на різні сцени
Робиться це за тією ж технікою, що і попередній спосіб без шарів. Ви можете перемістити вміст, що відображається текстурою візуалізації, у місце, де він ніколи не відображатиметься на основній камері. Відмінність від методу поділу сцен полягає в тому, що вам потрібно розмістити дві камери, але крім цього, у вас в основному будуть ті ж налаштування, що і метод поділу сцен.
Якщо потрібно захопити вміст, знятий з іншого ракурсу в 3D-грі, як текстуру візуалізації
Ця порада мало говорила про 3D, оскільки вона зосереджена на 2D, але підхід в основному однаковий. Оскільки ви проектуєте один 3D-простір з декількох точок зору, вам не потрібно мати більше двох сцен. Все, що вам потрібно зробити, це розмістити стільки камер, скільки вам потрібно, встановити ціль малювання як текстуру візуалізації та встановити, де відображати текстуру візуалізації.