Gunakan tekstur render untuk menampilkan konten adegan lain sebagai tekstur

Halaman Diperbarui :
Tanggal pembuatan halaman :

Lingkungan verifikasi

Windows
  • jendela 11
Editor Kesatuan
  • 2021.3.3f1
Paket Sistem Input
  • 1.3.0

Prasyarat untuk tip ini

Pengaturan berikut telah dibuat sebelumnya sebagai premis untuk deskripsi tip ini.

Pada awalnya

Render tekstur memungkinkan Anda untuk menulis gambar Anda ke tekstur alih-alih layar. Ini memungkinkan Anda untuk secara bebas menghasilkan tekstur selama eksekusi game tanpa menyiapkan gambar tekstur terlebih dahulu.

Anda juga dapat menulis ke tekstur render yang berubah secara dinamis setiap frame, misalnya, untuk memproyeksikan gambar yang berbeda dari kamera utama pada tampilan yang ada dalam game.

Mempersiapkan Gambar

Saat menggunakan tekstur render, Anda tidak perlu menyiapkan gambar, tetapi Anda dapat menyiapkannya sebagai sampel untuk membuat hasil gambar lebih mudah dipahami.

Membuat Tekstur Render

Buat aset dari proyek. Dari Buat, pilih Render Tekstur.

Namanya bisa sewenang-wenang. Karena nama tidak ditentukan langsung dari NewRenderTexture luar saat ini, biarkan sebagai .

Pilih tekstur render dan tentukan ukurannya dari Inspektur. Karena tekstur render adalah area gambar, Anda harus menentukan ukuran. Kali ini, saya ingin menulis pemandangan yang dibuat secara terpisah, jadi saya menetapkan rasio aspek ke 16:9.

Mengatur Tujuan Tekstur Render

Pilih "UI" > "Gambar Mentah" dari hierarki adegan yang awalnya dibuat. Tampilkan konten tekstur render dalam objek ini. Ini adalah objek UI, tetapi yang Anda butuhkan adalah komponen "Gambar Mentah", yang dapat diatur ke objek lain.

RawImage telah ditempatkan. Karena merupakan objek UI, objek tersebut ditempatkan di Canvas. Saya belum mengatur apa pun, jadi saya hanya mendapatkan persegi panjang putih.

Kami ingin skala menjadi sama satu sama lain, jadi kami mengatur ukuran objek RawImage menjadi sama dengan tekstur render. Jika Anda menjaga rasio aspek tetap sama, hasil gambar hanya akan diskalakan meskipun Anda mengubah ukurannya, tetapi jika Anda mengubah rasio aspek, hasil gambar akan dihancurkan secara vertikal atau horizontal.

Komponen Raw Image dari objek RawImage memiliki "tekstur", jadi atur tekstur render yang baru saja Anda buat di sana. Isi tekstur render masih kosong, sehingga transparan dalam tampilan.

Membuat adegan konten gambar tekstur render

Selanjutnya, buat scene baru untuk membuat konten yang akan digambar dalam tekstur render. Pilih File dari menu dan pilih New Scene.

Karena sampel ini 2D, Anda juga akan memilih adegan 2D.

Buat di folder Scene. SampleSceneTexture Biarkan nama sebagai .

Setelah membuat adegan, tempatkan objek dengan tepat. Yang harus Anda lakukan adalah memastikan Anda mengetahui isi tekstur render. Untuk memastikan bahwa apa pun yang menonjol di luar kamera tidak digambar, sprite juga ditempatkan di dekat bingkai kamera.

Jika objek tumpang tindih, konteks objek tidak akan pasti, jadi jika Anda memiliki latar belakang, turunkan urutan lapisan latar belakang.

Setelah memilih "MainCamera", atur tekstur render di "Target texture". Hal ini menyebabkan gambar digambar dalam tekstur render.

Hapus komponen Audio Listener yang diatur ke MainCamera. Yang Anda butuhkan untuk tekstur render hanyalah menggambar, jadi Anda tidak memerlukan Audio Listener. Peringatan akan ditampilkan jika ada beberapa "Pendengar Audio" saat runtime.

Omong-omong, jika Anda menjalankan adegan untuk tekstur render dalam keadaan ini, tidak ada yang akan ditampilkan di layar. Ini karena Anda menggambar pada tekstur render. Jika Anda ingin memeriksanya di layar, hapus "tekstur target" dan kemudian jalankan.

Pengaturan lapisan

Dalam contoh ini, Anda harus memindahkan dua adegan sekaligus, tetapi jika Anda memindahkannya sebagaimana adanya, konten yang akan digambar dalam tekstur render juga akan ditampilkan di layar utama, sehingga layer tidak akan digambar secara terpisah.

Pertama, pilih "Edit Layer" dari layer di sudut kanan atas editor.

Nama dan lokasi sewenang-wenang, tetapi di sini kita akan menambahkan layer baru RenderTarget bernama .

Setelah menambahkan layer, buka scene untuk tekstur render, pilih semua objek yang ingin Anda gambar, dan ubah nilai layer ke yang baru saja Anda buat RenderTarget .

SampleSceneTexture Ini akan mengakhiri pengeditan adegan, jadi harap simpan.

Menampilkan Tekstur Render

SampleScene Setelah Anda membuka adegan, tambahkan ke hierarki SampleSceneTexture dengan menyeret dan menjatuhkan adegan. Kemudian, harus ada dua adegan dalam hierarki, dan konten adegan harus ditampilkan di SampleSceneTexture layar.

SampleSceneTexture Isi adegan mengganggu, jadi klik ikon mata adegan dari SampleSceneTexture hierarki. SampleSceneTexture Ini akan menyembunyikan objek dalam adegan dan hanya isi adegan yang akan SampleScene terlihat. Omong-omong, karena semua pengaturan tekstur render telah selesai,SampleScene konten tekstur render harus ditampilkan dalam gambar mentah yang ditempatkan di tempat kejadian.

Namun, ikon hiding by the eye hanyalah pengaturan agar tidak terlihat di editor, jadi jika Anda menjalankan SampleSceneTexture game apa adanya, isi adegan juga akan ditampilkan di layar. SampleScene Kemudian pilih Scene Main Camera dan hapus centang From RenderTarget Culling Mask di Camera Inspector. Ini mencegah objek di lapisan ditampilkan saat RenderTarget game berjalan.

Coba jalankan game. Itu harus muncul sebagaimana dimaksud.

Coba pindahkan tekstur render

Namun, dalam keadaan ini, sulit untuk mengetahui apakah itu benar-benar berfungsi sebagai tekstur render atau hanya menampilkan gambar sebagai crop, jadi mari kita pindahkan.

Konten bisa apa saja, tetapi di sini kita akan mengatur gerakan untuk memutar sprite secara otomatis. SelfRotate Buat skrip dan buat sebagai .

Di sini, kita akan memasukkan proses sederhana memutar dirinya sedikit demi sedikit.

using UnityEngine;

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

Setelah membuat skrip, lampirkan lebih banyak dan lebih banyak lagi ke objek yang ingin Anda putar.

Kemudian jalankan game dan lihat apakah itu berputar. Saya pikir Anda dapat melihat bahwa objek bergerak dalam tekstur render.

Cara memindahkan beberapa adegan secara bersamaan

Di sini, kami membuat contoh sederhana sehingga kami memiliki dua adegan yang berjalan dari awal, tetapi dalam game nyata, ada banyak kasus di mana Anda harus memulai dengan satu adegan. Dalam hal ini, saya pikir Anda harus secara dinamis menambahkan adegan di awal adegan untuk membuatnya menjadi beberapa adegan.

Silakan merujuk ke "Menambahkan adegan" untuk penjelasan tentang cara menambahkan adegan. Pada dasarnya, SceneManager.LoadScene("<シーン名>", LoadSceneMode.Additive); menelepon harus menyelesaikan sebagian besar masalah.

Bagaimana mencegah konten tekstur render muncul di layar utama tanpa menggunakan lapisan

Konten tekstur render ditampilkan di layar utama karena adegan utama dan adegan tekstur render berada di tempat yang sama. Oleh karena itu, jika Anda memindahkan konten tekstur render ke tempat yang tidak pernah ditampilkan di adegan utama, itu tidak akan ditampilkan di layar utama. Misalnya, Anda dapat memindahkan objek tekstur render atau kamera ke lokasi (-10000, -10000). Dengan cara ini, pengaturan lapisan tidak diperlukan.

Saat Anda ingin menyelesaikan konten tekstur render dalam satu adegan tanpa membaginya menjadi adegan yang berbeda

Ini dilakukan dengan menggunakan teknik yang sama seperti metode sebelumnya tanpa lapisan. Anda dapat memindahkan konten yang ditampilkan oleh tekstur render ke tempat yang tidak akan pernah ditampilkan di kamera utama. Perbedaan dari metode memisahkan pemandangan yaitu, Anda harus menempatkan dua kamera, tetapi selain itu, pada dasarnya Anda akan memiliki pengaturan yang sama seperti metode memisahkan pemandangan.

Jika Anda ingin menangkap konten yang diambil dari perspektif berbeda dalam game 3D sebagai tekstur render

Tip ini tidak banyak bicara tentang 3D karena berfokus pada 2D, tetapi pendekatannya pada dasarnya sama. Karena Anda memproyeksikan satu ruang 3D dari berbagai perspektif, Anda tidak perlu memiliki lebih dari dua adegan. Yang harus Anda lakukan adalah menempatkan kamera sebanyak yang Anda butuhkan, mengatur tujuan gambar sebagai tekstur render, dan mengatur tempat untuk menampilkan tekstur render.