Renderelési textúrák használata egy másik jelenet tartalmának textúraként való megjelenítéséhez
Ellenőrzési környezet
- Windows
-
- Windows 11 esetén
- Unity-szerkesztő
-
- 2021.3.3f1
- Bemeneti rendszercsomag
-
- 1.3.0
A tipp előfeltételei
A következő beállításokat előre elvégeztük a tipp leírásának előfeltételeként.
Először
A renderelési textúrák lehetővé teszik, hogy a rajzokat a képernyő helyett egy textúrára írja. Ez lehetővé teszi, hogy szabadon generáljon textúrákat a játék végrehajtása során anélkül, hogy előre elkészítené a textúraképeket.
Olyan renderelési textúrába is írhat, amely minden képkockán dinamikusan változik, például úgy, hogy a fő kameráról egy másik képet vetítsen a játékban létező kijelzőre.
Képek előkészítése
Renderelési textúra használatakor nem kell előkészítenie a képet, de mintaként előkészítheti, hogy a rajz eredménye könnyebben érthető legyen.
Renderelési textúra létrehozása
Hozzon létre egy eszközt a projektből. A Létrehozás lapon válassza a Textúra renderelése lehetőséget.
A név tetszőleges lehet. Mivel a név jelenleg nincs közvetlenül kívülről NewRenderTexture
megadva, hagyja a -t.
Válassza ki a renderelési textúrát, és adja meg a méretét a Megtekintőben. Mivel a renderelési textúra rajzterület, meg kell adnia a méretet. Ezúttal egy külön létrehozott jelenetet szeretnék írni, ezért a képarányt 16:9-re állítottam.
A renderelési textúra célhelyének beállítása
Válassza az "UI" > a "Raw Image" lehetőséget az eredetileg létrehozott jelenet hierarchiájából. Jelenítse meg a renderelési textúra tartalmát ebben az objektumban. Ez a felhasználói felület objektuma, de amire szüksége van, az egy "Raw Image" összetevő, amely beállítható egy másik objektumra.
A RawImage elhelyezésre került. Mivel ez egy felhasználói felületi objektum, egy vászonra kerül. Még nem állítottam be semmit, így csak egy fehér téglalapot kapok.
Azt szeretnénk, hogy a lépték egyenlő legyen egymással, ezért a RawImage objektum méretét úgy állítottuk be, hogy megegyezzen a renderelési textúrával. Ha a méretarányt változatlanul hagyja, a rajz eredménye csak akkor lesz méretezve, ha módosítja a méretet, de ha módosítja a méretarányt, a rajzeredmény függőlegesen vagy vízszintesen összenyomódik.
A RawImage objektum Nyers kép összetevője "textúrával" rendelkezik, ezért állítsa be az imént létrehozott renderelési textúrát. A renderelési textúra tartalma továbbra is üres, így átlátszó a nézetben.
Renderelési textúra rajztartalmának jelenetének létrehozása
Ezután hozzon létre egy új jelenetet a renderelési textúrába rajzolandó tartalom létrehozásához. Válassza a Fájl lehetőséget a menüből, és válassza az Új jelenet lehetőséget.
Mivel ez a minta 2D-s, 2D-jelenetet is kell választania.
Hozza létre a Jelenet mappában. SampleSceneTexture
Hagyja meg a nevet .
A jelenet létrehozása után helyezze el megfelelően az objektumokat. Mindössze annyit kell tennie, hogy megbizonyosodik arról, hogy ismeri a renderelési textúra tartalmát. Annak megerősítése érdekében, hogy bármi, ami a kamerán kívül kinyúlik, nincs rajzolva, egy sprite is elhelyezhető a kamerakeret közelében.
Ha az objektumok átfedik egymást, az objektumok környezete határozatlan lesz, ezért ha van háttere, csökkentse a háttérrétegek sorrendjét.
A "MainCamera" kiválasztása után állítsa be a renderelési textúrát a "Céltextúra" részben. Ez azt eredményezi, hogy a rajz a renderelési textúrába kerül.
Távolítsa el a Hangfigyelő összetevőt, amely MainCamera értékre van állítva. A renderelési textúrához mindössze rajzolásra van szükség, így nincs szükség a Hanghallgatóra. Figyelmeztetés jelenik meg, ha futásidőben több "Hanghallgató" van.
Egyébként, ha ebben az állapotban futtatja a renderelési textúra jelenetét, semmi sem jelenik meg a képernyőn. Ennek az az oka, hogy renderelési textúrára rajzol. Ha ellenőrizni szeretné a képernyőn, törölje a "céltextúrát", majd hajtsa végre.
Réteg beállításai
Ebben a példában egyszerre két jelenetet kell mozgatnia, de ha úgy mozgatja őket, ahogy vannak, akkor a renderelési textúrában rajzolandó tartalom a főképernyőn is megjelenik, így a rétegek nem lesznek külön rajzolva.
Először válassza a "Réteg szerkesztése" lehetőséget a szerkesztő jobb felső sarkában található rétegből.
A név és a hely tetszőleges, de itt hozzáadunk egy új RenderTarget
réteget .
A réteg hozzáadása után nyissa meg a renderelési textúra jelenetét, jelölje ki az összes rajzolni kívánt objektumot, és módosítsa a réteg értékét az imént létrehozottra RenderTarget
.
SampleSceneTexture
Ezzel befejeződik a jelenet szerkesztése, ezért kérjük, mentse el.
Renderelési textúrák megjelenítése
SampleScene
Miután megnyitott egy jelenetet, húzással adja hozzá a hierarchiához SampleSceneTexture
.
Ezután két jelenetnek kell lennie a hierarchiában, és a jelenet tartalmának meg kell jelennie a SampleSceneTexture
képernyőn.
SampleSceneTexture
A jelenet tartalma zavaró, ezért kattintson a jelenet szem ikonjára a SampleSceneTexture
hierarchiában.
SampleSceneTexture
Ez elrejti a jelenetben lévő tárgyakat, és csak a jelenet SampleScene
tartalma lesz látható.
Egyébként, mivel az összes renderelési textúra beállítása befejeződött,SampleScene
a renderelési textúra tartalmát meg kell jeleníteni a jelenetbe helyezett nyers képen.
A szem ikon elrejtése azonban csak egy beállítás, amely láthatatlanná teszi a szerkesztőben, így ha úgy futtatja SampleSceneTexture
a játékot, ahogy van, a jelenet tartalma is megjelenik a képernyőn.
SampleScene
Ezután válassza a Jelenet Main Camera
lehetőséget, és törölje a jelölést a Selejtezőmaszkból RenderTarget
jelölőnégyzetből az Camera
Ellenőrben.
Ez megakadályozza, hogy a rétegen lévő objektumok megjelenjenek a játék futtatásakorRenderTarget
.
Próbálja meg futtatni a játékot. A rendeltetésnek megfelelően kell megjelennie.
Próbálja meg áthelyezni a renderelési textúrát
Ebben az állapotban azonban nehéz eldönteni, hogy valóban renderelési textúraként működik-e, vagy egyszerűen csak vágásként jeleníti meg a képet, ezért mozgassuk.
A tartalom bármi lehet, de itt beállítjuk a mozgást, hogy automatikusan elforgassa a sprite-ot. Hozzon létre egy szkriptet SelfRotate
, és hozza létre .
Itt egy egyszerű folyamatot fogunk tartalmazni, amely apránként forog.
using UnityEngine;
public class SelfRotate : MonoBehaviour
{
// 更新はフレームごとに 1 回呼び出されます
void Update()
{
transform.Rotate(0, 0, 0.1f);
}
}
A szkript létrehozása után egyre többet csatoljon az elforgatni kívánt objektumhoz.
Ezután futtassa a játékot, és nézze meg, hogy forog-e. Azt hiszem, láthatja, hogy az objektum mozog a renderelési textúrában.
Több jelenet áthelyezése egyszerre
Itt létrehoztunk egy egyszerű példát, hogy két jelenet fusson az elejétől, de egy igazi játékban sok olyan eset van, amikor egyetlen jelenettel kell kezdeni. Ebben az esetben úgy gondolom, hogy dinamikusan hozzá kell adnia jeleneteket a jelenet elején, hogy több jelenet legyen.
Kérjük, olvassa el a "Jelenet hozzáadása" részt a jelenet hozzáadásának magyarázatához.
Alapvetően a SceneManager.LoadScene("<シーン名>", LoadSceneMode.Additive);
hívásnak meg kell oldania a legtöbb problémát.
Hogyan akadályozható meg, hogy egy renderelési textúra tartalma rétegek használata nélkül megjelenjen a főképernyőn
A renderelési textúra tartalma megjelenik a főképernyőn, mert a fő jelenet és a renderelési textúra jelenete ugyanazon a helyen található. Ezért ha a renderelési textúra tartalmát olyan helyre helyezi át, amely soha nem jelenik meg a fő jelenetben, az nem jelenik meg a főképernyőn. Áthelyezhet például egy renderelési textúra objektumot vagy kamerát a (-10000, -10000) helyre. Így nincs szükség rétegbeállításokra.
Ha egy renderelési textúra tartalmát egy jelenetben szeretné befejezni anélkül, hogy különböző jelenetekre osztaná
Ezt ugyanazzal a technikával végezzük, mint az előző módszer rétegek nélkül. A renderelési textúra által megjelenített tartalmat áthelyezheti egy olyan helyre, ahol soha nem jelenik meg a fő kamerán. A különbség a jelenetek elválasztásának módjától az, hogy két kamerát kell elhelyeznie, de ettől eltekintve alapvetően ugyanazokkal a beállításokkal rendelkezik, mint a jelenetek elválasztásának módszere.
Ha egy 3D-s játékban más perspektívából rögzített tartalmat szeretne renderelési textúraként rögzíteni
Ez a tipp nem sokat beszélt a 3D-ről, mert a 2D-re összpontosított, de a megközelítés alapvetően ugyanaz. Mivel egyetlen 3D-s teret több perspektívából vetít ki, nem kell kettőnél több jelenettel rendelkeznie. Mindössze annyit kell tennie, hogy annyi kamerát helyez el, amennyire szüksége van, beállítja a rajzolás célját renderelési textúraként, és beállítja, hogy hol jelenjen meg a renderelési textúra.