Naudokite generavimo tekstūras, kad kitos scenos turinys būtų rodomas kaip tekstūros
Tikrinimo aplinka
- Windows
-
- Langai 11
- "Unity" redaktorius
-
- 2021.3.3F1
- Įvesties sistemos paketas
-
- 1.3.0
Būtinos šio patarimo sąlygos
Šie nustatymai buvo atlikti iš anksto kaip šio patarimo aprašymo prielaida.
Iš pradžių
Atvaizdavimo tekstūros leidžia rašyti piešinius į tekstūrą, o ne į ekraną. Tai leidžia laisvai generuoti tekstūras žaidimo vykdymo metu, iš anksto neparuošus tekstūros vaizdų.
Taip pat galite rašyti į atvaizdavimo tekstūrą, kuri dinamiškai keičia kiekvieną kadrą, pavyzdžiui, projektuoti skirtingą vaizdą iš pagrindinės kameros ekrane, kuris egzistuoja žaidime.
Vaizdų paruošimas
Kai naudojate atvaizdavimo tekstūrą, jums nereikia paruošti vaizdo, tačiau galite jį paruošti kaip pavyzdį, kad piešinio rezultatas būtų lengviau suprantamas.
Atvaizdavimo tekstūros kūrimas
Sukurkite turinį iš projekto. Dalyje Kurti pasirinkite Pateikti tekstūrą.
Pavadinimas gali būti savavališkas. Kadangi pavadinimas šiuo metu nėra nurodytas tiesiogiai iš išorės NewRenderTexture
, palikite kaip .
Pasirinkite atvaizdavimo tekstūrą ir nurodykite jos dydį iš inspektoriaus. Kadangi atvaizdavimo tekstūra yra piešimo sritis, turite nurodyti dydį. Šį kartą noriu parašyti atskirai sukurtą sceną, todėl kraštinių santykį nustatau į 16:9.
Atvaizdavimo tekstūros paskirties vietos nustatymas
Pasirinkite "UI" > "Raw Image" iš iš pradžių sukurtos scenos hierarchijos. Rodyti šio objekto atvaizdavimo tekstūros turinį. Tai yra vartotojo sąsajos objektas, tačiau jums reikia "neapdoroto vaizdo" komponento, kurį galima nustatyti į kitą objektą.
"RawImage" buvo įdėtas. Kadangi tai vartotojo sąsajos objektas, jis dedamas į drobę. Aš dar nieko nenustatiau, todėl tiesiog gaunu baltą stačiakampį.
Norime, kad mastelis būtų lygus vienas kitam, todėl nustatome, kad "RawImage" objekto dydis būtų toks pat kaip atvaizdavimo tekstūra. Jei išlaikysite tą patį kraštinių santykį, piešimo rezultatas bus keičiamas tik pakeitus dydį, tačiau jei pakeisite kraštinių santykį, piešimo rezultatas bus susmulkintas vertikaliai arba horizontaliai.
"RawImage" objekto "Raw Image" komponentas turi "tekstūrą", todėl nustatykite ką tik sukurtą atvaizdavimo tekstūrą. Atvaizdavimo tekstūros turinys vis dar tuščias, todėl rodinyje jie yra skaidrūs.
Atvaizdavimo tekstūros piešimo turinio scenos kūrimas
Tada sukurkite naują sceną, kad sukurtumėte turinį, kuris bus nupieštas atvaizdavimo tekstūroje. Meniu pasirinkite Failas ir pasirinkite Nauja scena.
Kadangi šis pavyzdys yra 2D, pasirinksite ir 2D vaizdą.
Sukurkite jį aplanke Scena. SampleSceneTexture
Palikite pavadinimą kaip .
Sukūrę sceną, tinkamai padėkite objektus. Viskas, ką jums reikia padaryti, tai įsitikinti, kad žinote atvaizdavimo tekstūros turinį. Norint patvirtinti, kad viskas, kas išsikiša už fotoaparato ribų, nėra nupiešta, šalia fotoaparato rėmo taip pat dedamas sprite.
Jei objektai sutampa, objektų kontekstas bus neapibrėžtas, todėl, jei turite foną, nuleiskite fono sluoksnių tvarką.
Pasirinkę "MainCamera", nustatykite atvaizdavimo tekstūrą "Tikslinė tekstūra". Dėl to piešinys piešiamas atvaizdavimo tekstūroje.
Pašalinkite "Audio Listener" komponentą, nustatytą į "MainCamera". Viskas, ko jums reikia atvaizdavimo tekstūrai, yra piešimas, todėl jums nereikia garso klausytojo. Bus rodomas įspėjimas, jei vykdymo metu yra keli "Garso klausytojai".
Beje, jei paleisite sceną dėl atvaizdavimo tekstūros šioje būsenoje, ekrane nieko nebus rodoma. Taip yra todėl, kad piešiate ant atvaizdavimo tekstūros. Jei norite tai patikrinti ekrane, ištrinkite "tikslinę tekstūrą" ir vykdykite.
Sluoksnio nustatymai
Šiame pavyzdyje turėsite perkelti dvi scenas tuo pačiu metu, tačiau jei perkelsite jas tokias, kokios yra, pagrindiniame ekrane taip pat bus rodomas turinys, kurį reikia nupiešti atvaizdavimo tekstūroje, todėl sluoksniai nebus piešiami atskirai.
Pirmiausia viršutiniame dešiniajame redaktoriaus kampe esančiame sluoksnyje pasirinkite "Redaguoti sluoksnį".
Pavadinimas ir vieta yra savavališki, tačiau čia pridėsime naują RenderTarget
sluoksnį, pavadintą .
Pridėję sluoksnį, atidarykite atvaizdavimo tekstūros sceną, pasirinkite visus objektus, kuriuos norite piešti, ir pakeiskite sluoksnio reikšmę į tą, kurią ką tik sukūrėte RenderTarget
.
SampleSceneTexture
Tai baigs scenos redagavimą, todėl išsaugokite ją.
Atvaizdavimo tekstūrų rodymas
SampleScene
Atidarę sceną, pridėkite ją prie hierarchijos SampleSceneTexture
vilkdami ir numesdami sceną.
Tada hierarchijoje turėtų būti dvi scenos, o scenos turinys turėtų būti rodomas SampleSceneTexture
ekrane.
SampleSceneTexture
Scenos turinys kelia nerimą, todėl hierarchijoje spustelėkite scenos SampleSceneTexture
akies piktogramą.
SampleSceneTexture
Tai paslėps scenoje esančius objektus ir bus SampleScene
matomas tik scenos turinys.
Beje, kadangi visi atvaizdavimo tekstūros nustatymai buvo baigti, atvaizdavimo tekstūros turinys turėtų būti rodomas neapdorotame paveikslėlyje,SampleScene
esančiame scenoje.
Tačiau slėpimas pagal akies piktogramą yra tik nustatymas, kad jis būtų nematomas redaktoriuje, taigi, jei paleisite SampleSceneTexture
žaidimą tokį, koks jis yra, scenos turinys taip pat bus rodomas ekrane.
SampleScene
Tada pasirinkite Scena Main Camera
ir panaikinkite Camera
žymėjimą nuo RenderTarget
skerdimo kaukės inspektoriuje.
Tai neleidžia rodyti sluoksnyje esančių objektų, kai RenderTarget
žaidimas veikia.
Pabandykite paleisti žaidimą. Jis turėtų pasirodyti taip, kaip numatyta.
Pabandykite perkelti atvaizdavimo tekstūrą
Tačiau šioje būsenoje sunku žinoti, ar ji tikrai veikia kaip atvaizdavimo tekstūra, ar tiesiog rodo vaizdą kaip apkarpymą, todėl perkelkime jį.
Turinys gali būti bet koks, bet čia mes nustatysime judėjimą, kad automatiškai pasuktų sprite. SelfRotate
Sukurkite scenarijų ir sukurkite jį kaip .
Čia mes įtrauksime paprastą savęs sukimosi procesą po truputį.
using UnityEngine;
public class SelfRotate : MonoBehaviour
{
// 更新はフレームごとに 1 回呼び出されます
void Update()
{
transform.Rotate(0, 0, 0.1f);
}
}
Sukūrę scenarijų, vis daugiau pridėkite prie objekto, kurį norite pasukti.
Tada paleiskite žaidimą ir pažiūrėkite, ar jis sukasi. Manau, kad matote, kad objektas juda atvaizdavimo tekstūroje.
Kaip perkelti kelias scenas vienu metu
Čia mes sukūrėme paprastą pavyzdį, kad turėtume dvi scenas, veikiančias nuo pat pradžių, tačiau tikrame žaidime yra daug atvejų, kai turite pradėti nuo vienos scenos. Tokiu atveju manau, kad turėsite dinamiškai pridėti scenas scenos pradžioje, kad tai būtų kelios scenos.
Paaiškinimą, kaip pridėti sceną, rasite skyriuje "Scenos pridėjimas".
Iš esmės SceneManager.LoadScene("<シーン名>", LoadSceneMode.Additive);
skambinimas turėtų išspręsti daugumą problemų.
Kaip neleisti pateikimo tekstūros turiniui pasirodyti pagrindiniame ekrane nenaudojant sluoksnių
Atvaizdavimo tekstūros turinys rodomas pagrindiniame ekrane, nes pagrindinė scena ir atvaizdavimo tekstūros scena yra toje pačioje vietoje. Todėl, jei perkelsite atvaizdavimo tekstūros turinį į vietą, kuri niekada nerodoma pagrindinėje scenoje, ji nebus rodoma pagrindiniame ekrane. Pavyzdžiui, galite perkelti atvaizdavimo tekstūros objektą arba fotoaparatą į (-10000, -10000) vietą. Tokiu būdu sluoksnio nustatymai nereikalingi.
Kai norite užbaigti atvaizdavimo tekstūros turinį vienoje scenoje, neskirstydami jos į skirtingas scenas
Tai daroma naudojant tą pačią techniką kaip ir ankstesnis metodas be sluoksnių. Galite perkelti turinį, rodomą pagal atvaizdavimo tekstūrą, į vietą, kur jis niekada nebus rodomas pagrindinėje kameroje. Skirtumas nuo scenų atskyrimo metodo yra tas, kad jums reikia įdėti dvi kameras, tačiau, be to, iš esmės turėsite tuos pačius nustatymus kaip ir scenų atskyrimo metodas.
Jei norite užfiksuoti turinį, užfiksuotą iš kitos perspektyvos 3D žaidime, kaip atvaizdavimo tekstūrą
Šis patarimas daug nekalbėjo apie 3D, nes jis sutelkė dėmesį į 2D, tačiau požiūris iš esmės yra tas pats. Kadangi projektuojate vieną 3D erdvę iš kelių perspektyvų, jums nereikia turėti daugiau nei dviejų scenų. Viskas, ką jums reikia padaryti, tai įdėti tiek fotoaparatų, kiek jums reikia, nustatyti piešimo paskirties vietą kaip atvaizdavimo tekstūrą ir nustatyti, kur rodyti atvaizdavimo tekstūrą.