Izmantojiet faktūru atveidi, lai attēlotu citas ainas saturu kā faktūras

Lapa atjaunota :
Lapas izveides datums :

Verifikācijas vide

Windows
  • Operētājsistēmā Windows 11
Vienotības redaktors
  • 2021.3.3f1
Ievades sistēmas pakete
  • 1.3.0

Priekšnoteikumi šim padomam

Tālāk norādītie iestatījumi ir veikti iepriekš kā priekšnoteikums šī padoma aprakstam.

Sākumā

Renderēt faktūras ļauj rakstīt zīmējumus faktūrā, nevis ekrānā. Tas ļauj brīvi ģenerēt tekstūras spēles izpildes laikā, iepriekš nesagatavojot tekstūras attēlus.

Varat arī rakstīt uz renderēšanas tekstūru, kas dinamiski maina katru kadru, piemēram, lai projicētu no galvenās kameras atšķirīgu attēlu displejā, kas pastāv spēlē.

Attēlu sagatavošana

Izmantojot renderēšanas tekstūru, jums nav jāsagatavo attēls, bet varat to sagatavot kā paraugu, lai zīmēšanas rezultāts būtu vieglāk saprotams.

Renderēšanas tekstūras izveide

Izveidojiet līdzekli no projekta. Sadaļā Izveidot atlasiet Atveidot tekstūru.

Nosaukums var būt patvaļīgs. Tā kā nosaukums šajā laikā nav norādīts tieši no NewRenderTexture ārpuses, atstājiet kā .

Atlasiet atveidojuma tekstūru un norādiet tās lielumu no inspektora. Tā kā renderēšanas tekstūra ir zīmēšanas laukums, jums jānorāda izmērs. Šoreiz vēlos uzrakstīt atsevišķi izveidotu ainu, tāpēc malu attiecību iestatīju uz 16:9.

Atveidošanas faktūras mērķa iestatīšana

Sākotnēji izveidotās ainas hierarhijā atlasiet "UI" > "Raw Image". Parādiet atveidojuma faktūras saturu šajā objektā. Tas ir lietotāja saskarnes objekts, bet tas, kas jums nepieciešams, ir komponents "Raw Image", kuru var iestatīt uz citu objektu.

RawImage ir ievietots. Tā kā tas ir lietotāja saskarnes objekts, tas ir ievietots audeklā. Es vēl neko neesmu iestatījis, tāpēc man vienkārši ir balts taisnstūris.

Mēs vēlamies, lai mērogs būtu vienāds viens ar otru, tāpēc mēs iestatām, lai RawImage objekta lielums būtu tāds pats kā renderēšanas tekstūrai. Ja saglabājat malu attiecību nemainīgu, zīmēšanas rezultāts tiks mērogots tikai tad, ja mainīsit izmēru, bet, mainot malu attiecību, zīmēšanas rezultāts tiks saspiests vertikāli vai horizontāli.

Raw Image objekta komponentam Raw Image ir "tekstūra", tāpēc iestatiet tikko izveidoto renderēšanas tekstūru. Atveidojuma tekstūras saturs joprojām ir tukšs, tāpēc skatā tie ir caurspīdīgi.

Tekstūras zīmēšanas satura atveidošanas ainas izveide

Pēc tam izveidojiet jaunu ainu, lai izveidotu saturu, kas jāzīmē renderēšanas tekstūrā. Izvēlnē izvēlieties Fails un atlasiet Jauna aina.

Tā kā šis paraugs ir 2D, jūs izvēlēsities arī 2D ainu.

Izveidojiet to mapē Aina. SampleSceneTexture Atstājiet vārdu kā .

Pēc ainas izveidošanas novietojiet objektus atbilstoši. Viss, kas jums jādara, ir pārliecināties, ka zināt renderēšanas tekstūras saturu. Lai apstiprinātu, ka viss, kas izvirzās ārpus kameras, nav uzzīmēts, pie kameras rāmja tiek novietots arī sprite.

Ja objekti pārklājas, objektu konteksts būs nenoteikts, tādēļ, ja jums ir fons, pazeminiet fona slāņu secību.

Pēc "MainCamera" izvēles iestatiet renderēšanas tekstūru sadaļā "Mērķa tekstūra". Tas izraisa zīmējuma zīmēšanu atveidojuma tekstūrā.

Noņemiet komponentu Audio Listener, kas iestatīts uz MainCamera. Viss, kas nepieciešams renderēšanas tekstūrai, ir zīmēšana, tāpēc audio klausītājs nav nepieciešams. Brīdinājums tiks parādīts, ja izpildlaikā ir vairāki "Audio klausītāji".

Starp citu, ja jūs palaižat ainu renderēšanas tekstūrai šādā stāvoklī, ekrānā nekas netiks parādīts. Tas ir tāpēc, ka jūs zīmējat uz renderēšanas tekstūras. Ja vēlaties to pārbaudīt ekrānā, izdzēsiet "mērķa tekstūru" un pēc tam izpildiet to.

Slāņa iestatījumi

Šajā paraugā jums būs jāpārvieto divas ainas vienlaikus, bet, ja tās pārvietosit tādas, kādas tās ir, renderēšanas tekstūrā zīmējamais saturs tiks parādīts arī galvenajā ekrānā, tāpēc slāņi netiks zīmēti atsevišķi.

Vispirms atlasiet "Rediģēt slāni" no slāņa redaktora augšējā labajā stūrī.

Nosaukums un atrašanās vieta ir patvaļīgi, bet šeit mēs pievienosim jaunu RenderTarget slāni ar nosaukumu .

Pēc slāņa pievienošanas atveriet atveidošanas faktūras ainu, atlasiet visus objektus, kurus vēlaties zīmēt, un mainiet slāņa vērtību uz tikko izveidoto RenderTarget .

SampleSceneTexture Tas izbeigs ainas rediģēšanu, tāpēc, lūdzu, saglabājiet to.

Renderēšanas faktūru parādīšana

SampleScene Kad esat atvēris skatu, pievienojiet to hierarhijai SampleSceneTexture , velkot un nometot skatu. Pēc tam hierarhijā vajadzētu būt divām ainām, un ainas saturs jāparāda SampleSceneTexture ekrānā.

SampleSceneTexture Ainas saturs ir satraucošs, tāpēc hierarhijā noklikšķiniet uz ainas acs ikonas SampleSceneTexture . SampleSceneTexture Tas paslēps objektus ainā, un būs redzams tikai ainas SampleScene saturs. Starp citu, tā kā visi renderēšanas tekstūras iestatījumi ir pabeigti,SampleScene renderēšanas tekstūras saturs jāparāda neapstrādātajā attēlā, kas ievietots attēlā.

Tomēr slēpšanās ar aci ikona ir tikai iestatījums, lai padarītu to neredzamu redaktorā, tādēļ, ja jūs palaižat SampleSceneTexture spēli tādu, kāda tā ir, ekrānā tiks parādīts arī ainas saturs. SampleScene Pēc tam inspektorā atlasiet Aina Main Camera un noņemiet atzīmi no izkaušanas RenderTarget maskasCamera. Tas neļauj rādīt slānī esošos objektus, kad RenderTarget spēle tiek palaista.

Mēģiniet palaist spēli. Tam vajadzētu parādīties, kā paredzēts.

Mēģiniet pārvietot renderēšanas tekstūru

Tomēr šajā stāvoklī ir grūti zināt, vai tas patiešām darbojas kā renderēšanas tekstūra vai vienkārši parāda attēlu kā kultūru, tāpēc pārvietosim to.

Saturs var būt jebkas, bet šeit mēs iestatīsim kustību, lai automātiski pagrieztu sprite. Izveidojiet skriptu SelfRotate un izveidojiet to kā .

Šeit mēs iekļausim vienkāršu procesu, kā pamazām pagriezt sevi.

using UnityEngine;

public class SelfRotate : MonoBehaviour
{
  // 更新はフレームごとに 1 回呼び出されます
  void Update()
  {
    transform.Rotate(0, 0, 0.1f);
  }
}

Pēc skripta izveidošanas arvien vairāk pievienojiet objektam, kuru vēlaties pagriezt.

Pēc tam palaidiet spēli un pārbaudiet, vai tā griežas. Es domāju, ka jūs varat redzēt, ka objekts pārvietojas renderēšanas tekstūrā.

Kā vienlaikus pārvietot vairākas ainas

Šeit mēs izveidojām vienkāršu piemēru, lai mums būtu divas ainas, kas darbojas no sākuma, bet reālā spēlē ir daudz gadījumu, kad jums jāsāk ar vienu ainu. Tādā gadījumā es domāju, ka jums būs dinamiski jāpievieno ainas ainas ainas sākumā, lai padarītu to par vairākām ainām.

Lūdzu, skatiet sadaļu "Ainas pievienošana", lai uzzinātu, kā pievienot ainu. Būtībā SceneManager.LoadScene("<シーン名>", LoadSceneMode.Additive); zvanīšanai vajadzētu atrisināt lielāko daļu problēmu.

Kā novērst renderēšanas tekstūras satura parādīšanos galvenajā ekrānā, neizmantojot slāņus

Atveidojuma faktūras saturs tiek parādīts galvenajā ekrānā, jo galvenā aina un atveidojuma faktūras aina atrodas vienā un tajā pašā vietā. Tāpēc, ja pārvietojat renderēšanas faktūras saturu uz vietu, kas nekad netiek rādīta galvenajā ainā, tā netiks parādīta galvenajā ekrānā. Piemēram, varat pārvietot renderēšanas faktūras objektu vai kameru uz (-10000, -10000) atrašanās vietu. Tādā veidā slāņa iestatījumi nav nepieciešami.

Ja vēlaties pabeigt renderēšanas faktūras saturu vienā ainā, nesadalot to dažādās ainās

Tas tiek darīts, izmantojot to pašu tehniku kā iepriekšējā metode bez slāņiem. Renderēšanas tekstūras parādīto saturu var pārvietot uz vietu, kur tas nekad netiks parādīts galvenajā kamerā. Atšķirība no ainu atdalīšanas metodes ir tāda, ka jums ir jānovieto divas kameras, bet, izņemot to, jums būtībā būs tādi paši iestatījumi kā ainu atdalīšanas metodei.

Ja vēlaties tvert saturu, kas uzņemts no citas perspektīvas 3D spēlē kā renderēšanas tekstūru

Šis padoms daudz nerunāja par 3D, jo tas koncentrējās uz 2D, bet pieeja būtībā ir tāda pati. Tā kā projicējat vienu 3D telpu no vairākām perspektīvām, jums nav nepieciešamas vairāk par divām ainām. Viss, kas jums jādara, ir jānovieto tik daudz kameru, cik nepieciešams, jāiestata zīmēšanas galamērķis kā renderēšanas faktūra un jāiestata, kur parādīt renderēšanas tekstūru.