Brug gengivelsesteksturer til at vise indholdet af en anden scene som teksturer

Side opdateret :
Dato for oprettelse af side :

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.