Brug gengivelsesteksturer til at vise indholdet af en anden scene som teksturer
Miljø til bekræftelse
- Windows
-
- Windows 11
- Enhedslistens redaktør
-
- 2021.3.3f1
- Input System Pakke
-
- 1.3.0
Forudsætninger for dette tip
Følgende indstillinger er foretaget på forhånd som en forudsætning for beskrivelsen af dette tip.
Først
Gengiv teksturer giver dig mulighed for at skrive dine tegninger til en tekstur i stedet for skærmen. Dette giver dig mulighed for frit at generere teksturer under spiludførelse uden at forberede teksturbilleder på forhånd.
Du kan også skrive til en gengivelsesstruktur, der ændrer dynamisk hvert billede, for eksempel for at projicere et andet billede fra hovedkameraet på en skærm, der findes i spillet.
Forberedelse af billeder
Når du bruger en gengivelsesstruktur, behøver du ikke at forberede et billede, men du kan forberede det som en prøve for at gøre tegningsresultatet lettere at forstå.
Oprettelse af en gengivelsestekstur
Opret et aktiv fra projektet. Fra Opret skal du vælge Gengiv tekstur.
Navnet kan være vilkårligt. Da navnet ikke er angivet direkte udefra på dette tidspunkt, skal du NewRenderTexture
forlade som .
Vælg gengivelsesteksturen, og angiv dens størrelse fra infovinduet. Da gengivelsesteksturen er et tegneområde, skal du angive en størrelse. Denne gang vil jeg skrive en scene, der er oprettet separat, så jeg indstiller billedformatet til 16:9.
Indstilling af destinationen for gengivelsestekstur
Vælg "UI" > "Raw Image" fra hierarkiet for den scene, der oprindeligt oprettes. Få vist indholdet af gengivelsesstrukturen i dette objekt. Det er et objekt i brugergrænsefladen, men hvad du har brug for er en "Raw Image" -komponent, som kan indstilles til et andet objekt.
RawImage er blevet placeret. Da det er et brugergrænsefladeobjekt, placeres det på et lærred. Jeg har ikke indstillet noget endnu, så jeg får bare et hvidt rektangel.
Vi ønsker, at skalaen skal være lig med hinanden, så vi indstiller størrelsen på RawImage-objektet til at være den samme som gengivelsesteksturen. Hvis du holder billedformatet det samme, skaleres tegningsresultatet kun, selvom du ændrer størrelsen, men hvis du ændrer billedformatet, knuses tegningsresultatet lodret eller vandret.
Raw Image-komponenten i RawImage-objektet har en "tekstur", så indstil den gengivelsesstruktur, du lige har oprettet der. Indholdet af gengivelsesteksturen er stadig tomt, så det er gennemsigtigt i visningen.
Oprette en scene med indhold til gengivelse af teksturtegning
Opret derefter en ny scene for at oprette det indhold, der skal tegnes i gengivelsesteksturen. Vælg Filer i menuen, og vælg Ny scene.
Da dette eksempel er 2D, vælger du også en 2D-scene.
Opret det i mappen Scene. SampleSceneTexture
Lad navnet være .
Når du har oprettet scenen, skal du placere objekterne korrekt. Alt du skal gøre er at sikre dig, at du kender indholdet af gengivelsesteksturen. For at bekræfte, at alt, hvad der stikker ud uden for kameraet, ikke er tegnet, placeres der også en sprite i nærheden af kamerarammen.
Hvis objekterne overlapper hinanden, vil objekternes kontekst være ubestemt, så hvis du har en baggrund, skal du sænke rækkefølgen af baggrundslagene.
Når du har valgt "MainCamera", skal du indstille gengivelsesteksturen i "Måltekstur". Dette får tegningen til at blive tegnet i gengivelsesteksturen.
Fjern komponenten Audio Listener, der er indstillet til MainCamera. Alt hvad du behøver for en gengivelsestekstur er tegning, så du behøver ikke Audio Listener. Der vises en advarsel, hvis der er flere "Audio Listeners" under kørsel.
Forresten, hvis du kører scenen for gengivelsesteksturen i denne tilstand, vises intet på skærmen. Dette skyldes, at du tegner på en gengivelsesstruktur. Hvis du vil kontrollere det på skærmen, skal du slette "måltekstur" og derefter udføre det.
Indstillinger for lag
I dette eksempel skal du flytte to scener på samme tid, men hvis du flytter dem, som de er, vises indholdet, der skal tegnes i gengivelsesteksturen, også på hovedskærmen, så lagene tegnes ikke separat.
Vælg først "Rediger lag" fra laget i øverste højre hjørne af editoren.
Navnet og placeringen er vilkårlige, men her tilføjer vi et nyt RenderTarget
lag med navnet .
Når du har tilføjet laget, skal du åbne scenen for gengivelsesteksturen, vælge alle de objekter, du vil tegne, og ændre lagværdien til den, du lige har oprettet RenderTarget
.
SampleSceneTexture
Dette afslutter redigeringen af scenen, så gem den.
Visning af gengivelsesteksturer
SampleScene
Når du har åbnet en scene, skal du føje den til hierarkiet SampleSceneTexture
ved at trække og slippe scenen.
Derefter skal der være to scener i hierarkiet, og indholdet af scenen skal vises på skærmen SampleSceneTexture
.
SampleSceneTexture
Scenens indhold er foruroligende, så klik på øjeikonet for scenen fra hierarkiet SampleSceneTexture
.
SampleSceneTexture
Dette skjuler objekterne i scenen, og kun indholdet af scenen vil SampleScene
være synligt.
Forresten, da alle gengivelsesteksturindstillingerne er afsluttet, skal indholdet af gengivelsesteksturen vises i det rå billede,SampleScene
der er placeret i scenen.
Skjul ved øjeikonet er dog kun en indstilling for at gøre det usynligt på editoren, så hvis du kører SampleSceneTexture
spillet som det er, vises indholdet af scenen også på skærmen.
SampleScene
Vælg derefter SceneMain Camera
, og fjern markeringen af Fra RenderTarget
aflivningsmaske i inspektørenCamera
.
Dette forhindrer, at objekterne i laget vises, når RenderTarget
spillet kører.
Prøv at køre spillet. Det skal se ud som tilsigtet.
Prøv at flytte gengivelsesteksturen
I denne tilstand er det imidlertid svært at vide, om det virkelig fungerer som en gengivelsestekstur eller blot viser billedet som en beskæring, så lad os flytte det.
Indholdet kan være hvad som helst, men her indstiller vi bevægelsen til automatisk at rotere sprite. Opret et SelfRotate
script, og opret det som .
Her vil vi inkludere en simpel proces med at rotere sig lidt efter lidt.
using UnityEngine;
public class SelfRotate : MonoBehaviour
{
// 更新はフレームごとに 1 回呼び出されます
void Update()
{
transform.Rotate(0, 0, 0.1f);
}
}
Når du har oprettet scriptet, skal du vedhæfte mere og mere til det objekt, du vil rotere.
Kør derefter spillet og se om det spinder. Jeg tror, du kan se, at objektet bevæger sig i gengivelsesteksturen.
Sådan flytter du flere scener på samme tid
Her skabte vi et simpelt eksempel, så vi har to scener, der kører fra starten, men i et rigtigt spil er der mange tilfælde, hvor du skal starte med en enkelt scene. I så fald tror jeg, at du bliver nødt til dynamisk at tilføje scener i begyndelsen af scenen for at gøre det til flere scener.
Se "Tilføjelse af en scene" for at få forklaringen på, hvordan du tilføjer en scene.
SceneManager.LoadScene("<シーン名>", LoadSceneMode.Additive);
Grundlæggende bør opkald løse de fleste af problemerne.
Sådan forhindres indholdet af en gengivelsestekstur i at blive vist på hovedskærmen uden brug af lag
Indholdet af gengivelsesteksturen vises på hovedskærmen, fordi hovedscenen og gengivelsesteksturscenen er på samme sted. Hvis du derfor flytter indholdet af gengivelsesteksturen til et sted, der aldrig vises i hovedscenen, vises det ikke på hovedskærmen. Du kan f.eks. flytte et gengivelsesteksturobjekt eller kamera til placeringen (-10000, -10000). På denne måde er lagindstillinger unødvendige.
Når du vil færdiggøre indholdet af en gengivelsesstruktur i én scene uden at opdele den i forskellige scener
Dette gøres ved hjælp af samme teknik som den foregående metode uden lag. Du kan flytte det indhold, der vises af gengivelsesteksturen, til et sted, hvor det aldrig vises på hovedkameraet. Forskellen fra metoden til at adskille scener er, at du skal placere to kameraer, men bortset fra det har du stort set de samme indstillinger som metoden til at adskille scener.
Hvis du vil optage indhold, der er optaget fra et andet perspektiv i et 3D-spil, som en gengivelsestekstur
Dette tip talte ikke meget om 3D, fordi det fokuserede på 2D, men tilgangen er stort set den samme. Da du projicerer et enkelt 3D-rum fra flere perspektiver, behøver du ikke have mere end to scener. Alt du skal gøre er at placere så mange kameraer, som du har brug for, indstille tegningsdestinationen som gengivelsestekstur og indstille, hvor gengivelsesteksturen skal vises.