Utilizzare le texture di rendering per visualizzare il contenuto di un'altra scena come texture

Pagina aggiornata :
Data di creazione della pagina :

Ambiente di verifica

Finestre
  • Windows 11
Unity Editor
  • 2021.3.3f1
Pacchetto del sistema di input
  • 1.3.0

Prerequisiti per questo suggerimento

Le seguenti impostazioni sono state effettuate in anticipo come premessa per la descrizione di questo suggerimento.

Dapprima

Le texture di rendering consentono di scrivere i disegni su una texture anziché sullo schermo. Ciò consente di generare liberamente texture durante l'esecuzione del gioco senza preparare in anticipo le immagini delle texture.

Puoi anche scrivere su una texture di rendering che cambia dinamicamente ogni fotogramma, ad esempio, per proiettare un'immagine diversa dalla telecamera principale su un display esistente nel gioco.

Preparazione delle immagini

Quando si utilizza una texture di rendering, non è necessario preparare un'immagine, ma è possibile prepararla come esempio per semplificare la comprensione del risultato del disegno.

Creazione di una texture di rendering

Creare una risorsa dal progetto. Da Crea (Create), selezionate Render texture.

Il nome può essere arbitrario. Poiché il nome non è specificato direttamente dall'esterno NewRenderTexture in questo momento, lasciare come .

Selezionate la texture di rendering e specificatene le dimensioni da Inspector. Poiché la texture di rendering è un'area di disegno, è necessario specificare una dimensione. Questa volta, voglio scrivere una scena creata separatamente, quindi ho impostato le proporzioni su 16:9.

Impostazione della destinazione della texture di rendering

Selezionare "UI" > "Raw Image" dalla gerarchia della scena creata inizialmente. Visualizzate il contenuto della texture di rendering in questo oggetto. È un oggetto dell'interfaccia utente, ma ciò di cui hai bisogno è un componente "Raw Image", che può essere impostato su un altro oggetto.

L'oggetto RawImage è stato inserito. Poiché è un oggetto dell'interfaccia utente, viene inserito in un oggetto Canvas. Non ho ancora impostato nulla, quindi ottengo solo un rettangolo bianco.

Vogliamo che la scala sia uguale l'una all'altra, quindi impostiamo la dimensione dell'oggetto RawImage in modo che sia uguale alla texture di rendering. Se si mantengono le stesse proporzioni, il risultato del disegno verrà ridimensionato solo se si modificano le dimensioni, ma se si modificano le proporzioni, il risultato del disegno verrà schiacciato verticalmente o orizzontalmente.

Il componente Raw Image dell'oggetto RawImage ha una "texture", quindi impostate la texture di rendering appena creata. Il contenuto della texture di rendering è ancora vuoto, quindi è trasparente nella vista.

Creazione di una scena di rendering del contenuto del disegno della texture

Quindi, create una nuova scena per creare il contenuto da disegnare nella texture di rendering. Scegliere File dal menu e selezionare Nuova scena.

Poiché questo esempio è 2D, sceglierai anche una scena 2D.

Crearlo nella cartella Scena. SampleSceneTexture Lasciare il nome come .

Dopo aver creato la scena, posizionate gli oggetti in modo appropriato. Tutto quello che devi fare è assicurarti di conoscere il contenuto della texture di rendering. Per confermare che tutto ciò che sporge all'esterno della fotocamera non viene disegnato, uno sprite viene posizionato anche vicino al telaio della fotocamera.

Se gli oggetti si sovrappongono, il contesto degli oggetti sarà indeterminato, quindi se hai uno sfondo, abbassa l'ordine dei livelli di sfondo.

Dopo aver selezionato "MainCamera", impostare la texture di rendering in "Texture di destinazione". In questo modo il disegno viene disegnato nella texture di rendering.

Rimuovere il componente Listener audio impostato su MainCamera. Tutto ciò che serve per una texture di rendering è disegnare, quindi non hai bisogno di Audio Listener. Verrà visualizzato un avviso se sono presenti più "ascoltatori audio" in fase di esecuzione.

A proposito, se si esegue la scena per la texture di rendering in questo stato, non verrà visualizzato nulla sullo schermo. Questo perché state disegnando su una texture di rendering. Se si desidera controllarlo sullo schermo, eliminare la "texture di destinazione" e quindi eseguirla.

Impostazioni dei livelli

In questo esempio, dovrai spostare due scene contemporaneamente, ma se le sposti così come sono, i contenuti da disegnare nella texture di rendering verranno visualizzati anche nella schermata principale, quindi i livelli non verranno disegnati separatamente.

Innanzitutto, seleziona "Modifica livello" dal livello nell'angolo in alto a destra dell'editor.

Il nome e la posizione sono arbitrari, ma qui aggiungeremo un nuovo RenderTarget livello chiamato .

Dopo aver aggiunto il livello, aprite la scena per la texture di rendering, selezionate tutti gli oggetti da disegnare e modificate il valore del livello con quello appena creato RenderTarget .

SampleSceneTexture Questo terminerà il montaggio della scena, quindi per favore salvala.

Visualizzazione delle texture di rendering

SampleScene Una volta aperta una scena, aggiungerla alla gerarchia SampleSceneTexture trascinandola e rilasciandola. Quindi, dovrebbero esserci due scene nella gerarchia e il contenuto della scena dovrebbe essere visualizzato sullo SampleSceneTexture schermo.

SampleSceneTexture Il contenuto della scena è inquietante, quindi fai clic sull'icona a forma di occhio della scena dalla SampleSceneTexture gerarchia. SampleSceneTexture Questo nasconderà gli oggetti nella scena e solo il contenuto della scena sarà SampleScene visibile. A proposito, poiché tutte le impostazioni della texture di rendering sono state completate,SampleScene il contenuto della texture di rendering dovrebbe essere visualizzato nell'immagine raw posizionata nella scena.

Tuttavia, l'icona nascosta dall'occhio è solo un'impostazione per renderla invisibile sull'editor, quindi se esegui SampleSceneTexture il gioco così com'è, anche il contenuto della scena verrà visualizzato sullo schermo. SampleScene Quindi selezionate Scena Main Camera e deselezionate Da RenderTarget maschera di selezione nella Camera finestra di impostazioni. Ciò impedisce che gli oggetti nel livello vengano visualizzati durante RenderTarget l'esecuzione del gioco.

Prova a eseguire il gioco. Dovrebbe apparire come previsto.

Prova a spostare la texture di rendering

Tuttavia, in questo stato, è difficile sapere se funziona davvero come texture di rendering o semplicemente visualizzando l'immagine come ritaglio, quindi spostiamola.

Il contenuto può essere qualsiasi cosa, ma qui imposteremo il movimento per ruotare automaticamente lo sprite. Creare uno SelfRotate script e crearlo come .

Qui, includeremo un semplice processo di rotazione a poco a poco.

using UnityEngine;

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

Dopo aver creato lo script, attacca sempre di più all'oggetto che desideri ruotare.

Quindi esegui il gioco e vedi se gira. Penso che tu possa vedere che l'oggetto si muove nella texture di rendering.

Come spostare più scene contemporaneamente

Qui, abbiamo creato un semplice esempio in modo da avere due scene in esecuzione dall'inizio, ma in un gioco reale, ci sono molti casi in cui devi iniziare con una singola scena. In tal caso, penso che dovrai aggiungere dinamicamente scene all'inizio della scena per renderla più scene.

Fare riferimento a "Aggiunta di una scena" per la spiegazione di come aggiungere una scena. Fondamentalmente, SceneManager.LoadScene("<シーン名>", LoadSceneMode.Additive); la chiamata dovrebbe risolvere la maggior parte dei problemi.

Come impedire che il contenuto di una texture di rendering appaia nella schermata principale senza utilizzare i livelli

Il contenuto della texture di rendering viene visualizzato nella schermata principale perché la scena principale e la scena della texture di rendering si trovano nella stessa posizione. Pertanto, se spostate il contenuto della texture di rendering in una posizione che non viene mai visualizzata nella scena principale, non verrà visualizzato nella schermata principale. Ad esempio, potete spostare un oggetto texture di rendering o una telecamera nella posizione (-10000, -10000). In questo modo, le impostazioni dei livelli non sono necessarie.

Quando si desidera completare il contenuto di una texture di rendering in una scena senza dividerla in scene diverse

Questo viene fatto usando la stessa tecnica del metodo precedente senza livelli. È possibile spostare il contenuto visualizzato dalla texture di rendering in una posizione in cui non verrà mai visualizzato sulla fotocamera principale. La differenza rispetto al metodo di separazione delle scene è che è necessario posizionare due telecamere, ma a parte questo, si avranno fondamentalmente le stesse impostazioni del metodo di separazione delle scene.

Se si desidera acquisire contenuti acquisiti da una prospettiva diversa in un gioco 3D come texture di rendering

Questo suggerimento non parlava molto di 3D perché si concentrava sul 2D, ma l'approccio è fondamentalmente lo stesso. Poiché stai proiettando un singolo spazio 3D da più prospettive, non è necessario avere più di due scene. Tutto quello che devi fare è posizionare tutte le telecamere di cui hai bisogno, impostare la destinazione del disegno come texture di rendering e impostare dove visualizzare la texture di rendering.