Renderdustekstuuride kasutamine teise stseeni sisu kuvamiseks tekstuuridena

Lehekülg uuendatud :
Lehe loomise kuupäev :

Kontrollimise keskkond

Windows
  • Windows 11
Ühtsuse toimetaja
  • 2021.3.3f1
Sisendsüsteemi pakett
  • 1.3.0

Selle näpunäite eeltingimused

Selle vihje kirjeldamise eelduseks on eelnevalt tehtud järgmised sätted.

Alguses

Renderdustekstuurid võimaldavad teil joonised kirjutada ekraani asemel tekstuurile. See võimaldab teil mängu täitmise ajal tekstuure vabalt genereerida ilma tekstuuripilte ette valmistamata.

Samuti saate kirjutada renderdustekstuurile, mis muudab dünaamiliselt iga kaadrit, näiteks projitseerida mängus olevale ekraanile põhikaamerast erinev pilt.

Piltide ettevalmistamine

Renderdustekstuuri kasutamisel ei pea te pilti ette valmistama, kuid saate selle ette valmistada näidisena, et joonistustulemust oleks lihtsam mõista.

Renderdustekstuuri loomine

Looge projektist vara. Valige jaotises Loo suvand Renderda tekstuur.

Nimi võib olla meelevaldne. Kuna nime ei ole praegu otse NewRenderTexture väljastpoolt täpsustatud, jätke see .

Valige renderdustekstuur ja määrake inspektorilt selle suurus. Kuna renderdustekstuur on joonistusala, peate määrama suuruse. Seekord tahan kirjutada eraldi loodud stseeni, nii et seadsin kuvasuhteks 16: 9.

Renderdustekstuuri sihtkoha määramine

Valige algselt loodud stseeni hierarhiast "UI" > "Toores pilt". Kuvage selle objekti renderdustekstuuri sisu. See on kasutajaliidese objekt, kuid see, mida vajate, on komponent "Toores pilt", mida saab seadistada teisele objektile.

RawImage on paigutatud. Kuna see on kasutajaliidese objekt, paigutatakse see lõuendile. Ma pole veel midagi seadnud, nii et saan lihtsalt valge ristküliku.

Tahame, et skaala oleks üksteisega võrdne, seega seadsime objekti RawImage suuruse samaks kui renderdustekstuur. Kui hoiate kuvasuhte samana, skaleeritakse joonistustulemust ainult siis, kui muudate suurust, kuid kui muudate kuvasuhet, purustatakse joonise tulemus vertikaalselt või horisontaalselt.

Objekti RawImage komponendil RawImage on "tekstuur", seega määrake seal äsja loodud renderdustekstuur. Renderdustekstuuri sisu on endiselt tühi, nii et need on vaates läbipaistvad.

Tekstuurijoonistuse sisu renderdamise stseeni loomine

Järgmisena looge uus stseen, et luua renderdustekstuuris joonistatav sisu. Valige menüüst Fail ja valige Uus stseen.

Kuna see näidis on 2D, valite ka 2D-stseeni.

Looge see kaustas Stseen. SampleSceneTexture Jätke nimi nimeks .

Pärast stseeni loomist asetage objektid sobivalt. Kõik, mida peate tegema, on veenduda, et teate renderdustekstuuri sisu. Kinnitamaks, et midagi, mis ulatub kaamerast väljapoole, ei joonistata, asetatakse kaamera kaadri lähedusse ka sprait.

Kui objektid kattuvad, on objektide kontekst määramata, nii et kui teil on taust, alandage taustakihtide järjekorda.

Pärast "MainCamera" valimist määrake renderdustekstuur jaotises "Sihttekstuur". See põhjustab joonise joonistamise renderdatud tekstuuris.

Eemaldage komponent Audio Listener, mille väärtuseks on seatud MainCamera. Renderdustekstuuri jaoks on vaja ainult joonistamist, nii et te ei vaja Audio Listenerit. Hoiatus kuvatakse, kui käitusajal on mitu "Audio Listeners".

Muide, kui käivitate selles olekus renderdustekstuuri stseeni, ei kuvata ekraanil midagi. Seda seetõttu, et joonistate renderdustekstuurile. Kui soovite seda ekraanil kontrollida, kustutage "sihttekstuur" ja käivitage see.

Kihi seaded

Selles proovis peate korraga liigutama kahte stseeni, kuid kui liigutate neid nii, nagu need on, kuvatakse renderdustekstuuris joonistatav sisu ka põhiekraanil, nii et kihte ei joonistata eraldi.

Esiteks valige redaktori paremas ülanurgas olevast kihist "Redigeeri kihti".

Nimi ja asukoht on meelevaldsed, kuid siia lisame uue RenderTarget kihi nimega .

Pärast kihi lisamist avage renderdustekstuuri stseen, valige kõik objektid, mida soovite joonistada, ja muutke kihi väärtus äsja loodud RenderTarget väärtuseks .

SampleSceneTexture See lõpetab stseeni redigeerimise, nii et palun salvestage see.

Renderdustekstuuride kuvamine

SampleScene Kui olete stseeni avanud, lisage see hierarhiasse SampleSceneTexture , lohistades stseeni. Seejärel peaks hierarhias olema kaks stseeni ja stseeni sisu tuleks ekraanil kuvada SampleSceneTexture .

SampleSceneTexture Stseeni sisu on häiriv, nii et klõpsake hierarhias SampleSceneTexture stseeni silmaikoonil. SampleSceneTexture See peidab stseenis olevad objektid ja nähtav on SampleScene ainult stseeni sisu. Muide, kuna kõik renderdamise tekstuuri seaded on lõpule viidud,SampleScene tuleks renderdustekstuuri sisu kuvada stseeni paigutatud toorpildis.

Silmaikooni peitmine on aga ainult seade, mis muudab selle redaktoris nähtamatuks, nii et kui käivitate SampleSceneTexture mängu nii, nagu see on, kuvatakse ekraanil ka stseeni sisu. SampleScene Seejärel valige Stseen Main Camera ja tühjendage inspektoris Camera märkeruut Tapmismaskist RenderTarget . See takistab kihis olevate objektide kuvamist mängu käivitamisel RenderTarget .

Proovige mängu käivitada. See peaks ilmuma nii, nagu ette nähtud.

Proovige renderdustekstuuri teisaldada

Kuid selles olekus on raske teada, kas see tõesti töötab renderdustekstuurina või lihtsalt kuvab pildi põllukultuurina, nii et liigutame seda.

Sisu võib olla ükskõik milline, kuid siin seame liikumise spraidi automaatselt pöörama. Looge skript SelfRotate ja looge see nimega .

Siin lisame lihtsa protsessi, et ennast vähehaaval pöörata.

using UnityEngine;

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

Pärast skripti loomist lisage üha enam objektile, mida soovite pöörata.

Seejärel käivitage mäng ja vaadake, kas see keerleb. Ma arvan, et näete, et objekt liigub renderdustekstuuris.

Kuidas liigutada mitut stseeni korraga

Siin lõime lihtsa näite, nii et meil on kaks stseeni, mis jooksevad algusest peale, kuid reaalses mängus on palju juhtumeid, kus peate alustama ühest stseenist. Sel juhul arvan, et peate stseeni algusesse dünaamiliselt lisama stseene, et muuta see mitmeks stseeniks.

Palun vaadake "Stseeni lisamine", et selgitada, kuidas stseeni lisada. Põhimõtteliselt SceneManager.LoadScene("<シーン名>", LoadSceneMode.Additive); peaks helistamine lahendama enamiku probleemidest.

Kuidas vältida renderdatud tekstuuri sisu ilmumist põhiekraanile ilma kihte kasutamata

Renderdustekstuuri sisu kuvatakse põhiekraanil, kuna põhistseen ja renderdustekstuuri stseen asuvad samas kohas. Seega, kui liigutate renderdustekstuuri sisu kohta, mida põhistseenis kunagi ei kuvata, ei kuvata seda põhiekraanil. Näiteks saate teisaldada renderdustekstuuriga objekti või kaamera asukohta (-10000, -10000). Nii pole kihi seaded vajalikud.

Kui soovite renderdustekstuuri sisu ühes stseenis lõpule viia, jagamata seda erinevateks stseenideks;

Seda tehakse sama tehnikaga nagu eelmine meetod ilma kihtideta. Renderdustekstuuri kuvatava sisu saate teisaldada kohta, kus seda kunagi põhikaameras ei kuvata. Erinevus stseenide eraldamise meetodist on see, et peate paigutama kaks kaamerat, kuid peale selle on teil põhimõtteliselt samad seaded kui stseenide eraldamise meetodil.

Kui soovite jäädvustada 3D-mängus teisest vaatenurgast jäädvustatud sisu renderdustekstuurina

See näpunäide ei rääkinud 3D-st palju, kuna see keskendus 2D-le, kuid lähenemine on põhimõtteliselt sama. Kuna projitseerite ühte 3D-ruumi mitmest vaatenurgast, ei pea teil olema rohkem kui kaks stseeni. Kõik, mida peate tegema, on paigutada nii palju kaameraid kui vaja, seada renderdustekstuuriks joonise sihtkoht ja määrata, kus renderdustekstuuri kuvada.