Haruskah saya menyertakan GameObject induk Canvas dalam prefab UI di Unity

Saya memiliki empat elemen Canvas berbeda dalam adegan Unity saya. Ini mengaturnya berdasarkan perhatian, tetapi juga meningkatkan kinerja karena saya tidak perlu membangun kembali semua elemen jika saya mengotori salah satunya. Saya ingin membuat prefab dari masing-masing prefab sehingga saya dapat menggunakannya kembali di seluruh game, dan juga agar elemen dalam file adegan saya lebih sedikit (saya belum mengetahui mengapa Unity tidak mengatur ulang YAML agar sesuai dengan urutan dan hierarki adegan. . Saat ini saya tidak dapat melihat alasannya dan itu membuat kontrol sumber menjadi sangat merepotkan).

Jadi, pertanyaan saya: Haruskah saya memasukkan Canvas sebagai GameObject induk di cetakan, atau haruskah saya menjadikan anak pertama sebagai cetakan (lihat gambar)? Saya melihat dua perspektif:

  1. Di satu sisi, menyenangkan untuk memindai daftar elemen di akar adegan dan melihat objek biru dan mengetahui bahwa objek tersebut secara otomatis direplikasi di seluruh adegan. Ditambah lagi, semakin banyak objek yang disimpan di prefab maka semakin sedikit pula yang mencemari file YAML saya.
  2. Di sisi lain, dengan skrip Canvas Scalar pada induknya, ukuran di dalam prefab akan diperbarui setiap kali saya mengubah resolusi/platform dan saya membaca bahwa tidak baik selalu memperbaruinya di luar mode prefab. Masalah lainnya adalah fakta bahwa elemen UI biasanya memiliki banyak referensi eksternal untuk memperbarui teks dan sebagainya.

hierarki


person ow3n    schedule 31.10.2020    source sumber


Jawaban (1)


Setelah melakukan lebih banyak penelitian, saya sampai pada beberapa kesimpulan tentang jawabannya:

  1. Sebagaimana dinyatakan dalam pembicaraan ini di Unite 2017, mengisolasi pulau elemen UI berdasarkan kekhawatiran DAN seberapa sering mereka diperbarui akan menjaga UI agar tidak memengaruhi kinerja. Video tersebut juga menyatakan bahwa boleh saja menggunakan beberapa Kanvas di dalam Kanvas lain untuk mencapai tujuan ini.
  2. Jika Anda menambahkan cetakan yang nilainya diperbarui dari luar cetakan, nilai tersebut akan muncul sebagai penggantian cetakan tersebut. Ini termasuk jika Anda menautkan ke elemen di luar cetakan dari dalamnya dan sebaliknya (lihat gambar). Yang penting, tidak mungkin menerapkan penggantian ini pada cetakan, dan itulah intinya. Unity menerima bahwa perubahan ini akan terjadi dan beginilah cara Unity menghadapinya tanpa merusak cetakan atau suasananya.

Jadi jawabannya adalah ya, tidak masalah untuk menyertakan induk Canvas di prefab, dan Anda bahkan dapat mengaturnya di dalam Canvas lain sehingga semuanya mewarisi pengaturan yang sama. Selanjutnya, karena semakin banyak kode yang disimpan di prefab mengurangi kode ekstra (tidak terorganisir) yang identik dalam file .unity YAML (dalam kasus saya dari 17.000 baris menjadi kurang dari 5000!) maka ini adalah cara yang disarankan.

menimpa

referensi luar

person ow3n    schedule 31.10.2020