Χρήση υφών απόδοσης για την εμφάνιση των περιεχομένων μιας άλλης σκηνής ως υφών
Περιβάλλον επαλήθευσης
- παράθυρα
-
- Παράθυρα 11
- Επεξεργαστής ενότητας
-
- 2021.3.3στ1
- Πακέτο συστήματος εισόδου
-
- 1.3.0
Προϋποθέσεις για αυτήν τη συμβουλή
Οι ακόλουθες ρυθμίσεις έχουν γίνει εκ των προτέρων ως προϋπόθεση για την περιγραφή αυτής της συμβουλής.
Αρχικά
Οι υφές απόδοσης σάς επιτρέπουν να γράφετε τα σχέδιά σας σε υφή αντί για την οθόνη. Αυτό σας επιτρέπει να δημιουργείτε ελεύθερα υφές κατά την εκτέλεση του παιχνιδιού χωρίς να προετοιμάζετε εκ των προτέρων εικόνες υφής.
Μπορείτε επίσης να γράψετε σε μια υφή απόδοσης που αλλάζει δυναμικά κάθε καρέ, για παράδειγμα, για να προβάλετε μια διαφορετική εικόνα από την κύρια κάμερα σε μια οθόνη που υπάρχει στο παιχνίδι.
Προετοιμασία εικόνων
Όταν χρησιμοποιείτε υφή απόδοσης, δεν χρειάζεται να προετοιμάσετε μια εικόνα, αλλά μπορείτε να την προετοιμάσετε ως δείγμα για να διευκολύνετε την κατανόηση του αποτελέσματος σχεδίασης.
Δημιουργία υφής απόδοσης
Δημιουργήστε ένα στοιχείο από το έργο. Από τη Δημιουργία, επιλέξτε Απόδοση υφής.
Το όνομα μπορεί να είναι αυθαίρετο. Δεδομένου ότι το όνομα δεν καθορίζεται απευθείας από το NewRenderTexture
εξωτερικό αυτήν τη στιγμή, αφήστε ως .
Επιλέξτε την υφή απόδοσης και καθορίστε το μέγεθός της από τον επιθεωρητή. Δεδομένου ότι η υφή απόδοσης είναι μια περιοχή σχεδίασης, πρέπει να καθορίσετε ένα μέγεθος. Αυτή τη φορά, θέλω να γράψω μια σκηνή που δημιουργήθηκε ξεχωριστά, οπότε όρισα την αναλογία διαστάσεων σε 16:9.
Ρύθμιση του προορισμού υφής απόδοσης
Επιλέξτε "UI" > "Raw Image" από την ιεραρχία της σκηνής που δημιουργήθηκε αρχικά. Εμφάνιση των περιεχομένων της υφής απόδοσης σε αυτό το αντικείμενο. Είναι ένα αντικείμενο του UI, αλλά αυτό που χρειάζεστε είναι ένα στοιχείο "Raw Image", το οποίο μπορεί να οριστεί σε άλλο αντικείμενο.
Το RawImage έχει τοποθετηθεί. Επειδή είναι αντικείμενο περιβάλλοντος εργασίας χρήστη, τοποθετείται σε καμβά. Δεν έχω ορίσει τίποτα ακόμα, οπότε παίρνω μόνο ένα λευκό ορθογώνιο.
Θέλουμε η κλίμακα να είναι ίση μεταξύ τους, οπότε ορίζουμε το μέγεθος του αντικειμένου RawImage να είναι το ίδιο με την υφή απόδοσης. Εάν διατηρήσετε την αναλογία διαστάσεων ίδια, το αποτέλεσμα σχεδίασης θα κλιμακωθεί μόνο αν αλλάξετε το μέγεθος, αλλά εάν αλλάξετε την αναλογία διαστάσεων, το αποτέλεσμα σχεδίασης θα συνθλίβεται κάθετα ή οριζόντια.
Το στοιχείο Raw Image του αντικειμένου RawImage έχει μια "υφή", επομένως ορίστε την υφή απόδοσης που μόλις δημιουργήσατε εκεί. Τα περιεχόμενα της υφής απόδοσης εξακολουθούν να είναι κενά, επομένως είναι διαφανή στην προβολή.
Δημιουργία σκηνής απόδοσης περιεχομένου σχεδίασης υφής
Στη συνέχεια, δημιουργήστε μια νέα σκηνή για να δημιουργήσετε το περιεχόμενο που θα σχεδιαστεί στην υφή απόδοσης. Επιλέξτε Αρχείο από το μενού και επιλέξτε Νέα σκηνή.
Δεδομένου ότι αυτό το δείγμα είναι 2D, θα επιλέξετε επίσης μια σκηνή 2D.
Δημιουργήστε το στο φάκελο Scene. SampleSceneTexture
Αφήστε το όνομα ως .
Αφού δημιουργήσετε τη σκηνή, τοποθετήστε τα αντικείμενα κατάλληλα. Το μόνο που έχετε να κάνετε είναι να βεβαιωθείτε ότι γνωρίζετε τα περιεχόμενα της υφής απόδοσης. Προκειμένου να επιβεβαιωθεί ότι οτιδήποτε προεξέχει έξω από την κάμερα δεν έχει σχεδιαστεί, ένα αντικείμενο τοποθετείται επίσης κοντά στο πλαίσιο της κάμερας.
Εάν τα αντικείμενα επικαλύπτονται, το περιβάλλον των αντικειμένων θα είναι απροσδιόριστο, οπότε αν έχετε φόντο, μειώστε τη σειρά των επιπέδων φόντου.
Αφού επιλέξετε "MainCamera", ορίστε την υφή απόδοσης στο "Target texture". Αυτό προκαλεί τη σχεδίαση του σχεδίου στην υφή απόδοσης.
Καταργήστε το στοιχείο ακρόασης ήχου που έχει οριστεί σε MainCamera. Το μόνο που χρειάζεστε για μια υφή απόδοσης είναι να σχεδιάσετε, επομένως δεν χρειάζεστε το Audio Listener. Θα εμφανιστεί μια προειδοποίηση εάν υπάρχουν πολλοί "Ακροατές ήχου" κατά το χρόνο εκτέλεσης.
Παρεμπιπτόντως, εάν εκτελέσετε τη σκηνή για την υφή απόδοσης σε αυτήν την κατάσταση, τίποτα δεν θα εμφανιστεί στην οθόνη. Αυτό συμβαίνει επειδή σχεδιάζετε μια υφή απόδοσης. Εάν θέλετε να το ελέγξετε στην οθόνη, διαγράψτε την "υφή στόχου" και, στη συνέχεια, εκτελέστε την.
Ρυθμίσεις επιπέδου
Σε αυτό το δείγμα, θα πρέπει να μετακινήσετε δύο σκηνές ταυτόχρονα, αλλά αν τις μετακινήσετε ως έχουν, τα περιεχόμενα που θα σχεδιαστούν στην υφή απόδοσης θα εμφανιστούν επίσης στην κύρια οθόνη, επομένως τα επίπεδα δεν θα σχεδιαστούν ξεχωριστά.
Αρχικά, επιλέξτε "Επεξεργασία επιπέδου" από το επίπεδο στην επάνω δεξιά γωνία του προγράμματος επεξεργασίας.
Το όνομα και η τοποθεσία είναι αυθαίρετα, αλλά εδώ θα προσθέσουμε ένα νέο RenderTarget
στρώμα που ονομάζεται .
Αφού προσθέσετε το επίπεδο, ανοίξτε το σκηνικό για την υφή απόδοσης, επιλέξτε όλα τα αντικείμενα που θέλετε να σχεδιάσετε και αλλάξτε την τιμή του επιπέδου σε αυτήν που μόλις δημιουργήσατε RenderTarget
.
SampleSceneTexture
Αυτό θα τερματίσει την επεξεργασία της σκηνής, οπότε αποθηκεύστε την.
Εμφάνιση υφών απόδοσης
SampleScene
Αφού ανοίξετε μια σκηνή, προσθέστε την στην ιεραρχία SampleSceneTexture
σύροντας και αποθέτοντας τη σκηνή.
Στη συνέχεια, θα πρέπει να υπάρχουν δύο σκηνές στην ιεραρχία και τα περιεχόμενα της σκηνής θα πρέπει να εμφανίζονται στην SampleSceneTexture
οθόνη.
SampleSceneTexture
Το περιεχόμενο της σκηνής είναι ενοχλητικό, επομένως κάντε κλικ στο εικονίδιο ματιού της σκηνής από την SampleSceneTexture
ιεραρχία.
SampleSceneTexture
Αυτό θα κρύψει τα αντικείμενα στη σκηνή και μόνο τα περιεχόμενα της σκηνής θα SampleScene
είναι ορατά.
Παρεμπιπτόντως, δεδομένου ότι έχουν ολοκληρωθεί όλες οι ρυθμίσεις υφής απόδοσης,SampleScene
τα περιεχόμενα της υφής απόδοσης θα πρέπει να εμφανίζονται στην ακατέργαστη εικόνα που τοποθετείται στη σκηνή.
Ωστόσο, το εικονίδιο απόκρυψης από το μάτι είναι μόνο μια ρύθμιση που το καθιστά αόρατο στο πρόγραμμα επεξεργασίας, οπότε αν εκτελέσετε SampleSceneTexture
το παιχνίδι ως έχει, τα περιεχόμενα της σκηνής θα εμφανίζονται επίσης στην οθόνη.
SampleScene
Στη συνέχεια, επιλέξτε Σκηνή Main Camera
και καταργήστε την επιλογή Από RenderTarget
μάσκα Camera
σφαγής στο Επιθεωρητής.
Αυτό αποτρέπει την εμφάνιση των αντικειμένων στο επίπεδο κατά RenderTarget
την εκτέλεση του παιχνιδιού.
Δοκιμάστε να εκτελέσετε το παιχνίδι. Θα πρέπει να εμφανίζεται όπως προβλέπεται.
Δοκιμάστε να μετακινήσετε την υφή απόδοσης
Ωστόσο, σε αυτήν την κατάσταση, είναι δύσκολο να γνωρίζουμε αν λειτουργεί πραγματικά ως υφή απόδοσης ή απλώς εμφανίζει την εικόνα ως καλλιέργεια, οπότε ας το μετακινήσουμε.
Το περιεχόμενο μπορεί να είναι οτιδήποτε, αλλά εδώ θα ρυθμίσουμε την κίνηση ώστε να περιστρέφεται αυτόματα το αντικείμενο. Δημιουργήστε ένα SelfRotate
σενάριο και δημιουργήστε το ως .
Εδώ, θα συμπεριλάβουμε μια απλή διαδικασία περιστροφής σιγά-σιγά.
using UnityEngine;
public class SelfRotate : MonoBehaviour
{
// 更新はフレームごとに 1 回呼び出されます
void Update()
{
transform.Rotate(0, 0, 0.1f);
}
}
Αφού δημιουργήσετε το σενάριο, επισυνάψτε όλο και περισσότερο στο αντικείμενο που θέλετε να περιστρέψετε.
Στη συνέχεια, εκτελέστε το παιχνίδι και δείτε αν περιστρέφεται. Νομίζω ότι μπορείτε να δείτε ότι το αντικείμενο κινείται στην υφή απόδοσης.
Πώς να μετακινήσετε πολλές σκηνές ταυτόχρονα
Εδώ, δημιουργήσαμε ένα απλό παράδειγμα, ώστε να έχουμε δύο σκηνές που τρέχουν από την αρχή, αλλά σε ένα πραγματικό παιχνίδι, υπάρχουν πολλές περιπτώσεις όπου πρέπει να ξεκινήσετε με μία μόνο σκηνή. Σε αυτή την περίπτωση, νομίζω ότι θα πρέπει να προσθέσετε δυναμικά σκηνές στην αρχή της σκηνής για να την κάνετε πολλαπλές σκηνές.
Ανατρέξτε στην ενότητα "Προσθήκη σκηνής" για την επεξήγηση του τρόπου προσθήκης μιας σκηνής.
Βασικά, SceneManager.LoadScene("<シーン名>", LoadSceneMode.Additive);
η κλήση θα πρέπει να λύσει τα περισσότερα από τα προβλήματα.
Πώς να αποτρέψετε την εμφάνιση των περιεχομένων μιας υφής απόδοσης στην κύρια οθόνη χωρίς τη χρήση επιπέδων
Το περιεχόμενο της υφής απόδοσης εμφανίζεται στην κύρια οθόνη, επειδή η κύρια σκηνή και η σκηνή υφής απόδοσης βρίσκονται στην ίδια θέση. Επομένως, εάν μετακινήσετε τα περιεχόμενα της υφής απόδοσης σε ένα μέρος που δεν εμφανίζεται ποτέ στην κύρια σκηνή, δεν θα εμφανιστεί στην κύρια οθόνη. Για παράδειγμα, μπορείτε να μετακινήσετε ένα αντικείμενο υφής απόδοσης ή μια φωτογραφική μηχανή στη θέση (-10000, -10000). Με αυτόν τον τρόπο, οι ρυθμίσεις επιπέδου δεν είναι απαραίτητες.
Όταν θέλετε να ολοκληρώσετε τα περιεχόμενα μιας υφής απόδοσης σε μία σκηνή χωρίς να τη διαιρέσετε σε διαφορετικές σκηνές
Αυτό γίνεται χρησιμοποιώντας την ίδια τεχνική με την προηγούμενη μέθοδο χωρίς στρώματα. Μπορείτε να μετακινήσετε το περιεχόμενο που εμφανίζεται από την υφή απόδοσης σε ένα σημείο όπου δεν θα εμφανίζεται ποτέ στην κύρια κάμερα. Η διαφορά από τη μέθοδο διαχωρισμού σκηνών είναι ότι πρέπει να τοποθετήσετε δύο κάμερες, αλλά εκτός από αυτό, θα έχετε βασικά τις ίδιες ρυθμίσεις με τη μέθοδο διαχωρισμού σκηνών.
Αν θέλετε να καταγράψετε περιεχόμενο που έχει καταγραφεί από διαφορετική οπτική γωνία σε ένα παιχνίδι 3D ως υφή απόδοσης
Αυτή η συμβουλή δεν μίλησε πολύ για το 3D επειδή επικεντρώθηκε στο 2D, αλλά η προσέγγιση είναι βασικά η ίδια. Δεδομένου ότι προβάλλετε έναν μόνο χώρο 3D από πολλές οπτικές γωνίες, δεν χρειάζεται να έχετε περισσότερες από δύο σκηνές. Το μόνο που έχετε να κάνετε είναι να τοποθετήσετε όσες κάμερες χρειάζεστε, να ορίσετε τον προορισμό σχεδίασης ως υφή απόδοσης και να ορίσετε πού θα εμφανίζεται η υφή απόδοσης.