Saya membuat apa yang pada dasarnya adalah sistem cetakan saya sendiri. Objek game ditentukan oleh file data yang dapat dibaca manusia. Saya ingin membuat GameObject kosong, memuatnya dengan komponen yang ditentukan dalam file data dan membuatnya siap dan menunggu Instantiate()
panggilan. Namun, setiap kali saya menggunakan GameObject go = new GameObject()
objek game baru ditambahkan ke TKP.
Menggunakan Unity bawaan prefab, saya dapat memuat prefab sebagai GameObject, dan itu tidak ditambahkan ke adegan. (Lihat contoh di bawah)
Alasan di balik ini adalah saya ingin memiliki satu daftar yang berisi GameObjects, beberapa dihasilkan oleh memuat prefab Unity dan yang lainnya dibuat oleh sistem prefab kustom saya. Ini perlu terjadi pada saat run time, dan tidak dapat melibatkan Unity Editor (karena idealnya pengguna akhir akan dapat menentukan file data mereka sendiri).
Bagaimana saya bisa membuat GameObject baru, tanpa Unity secara otomatis instantiate untuk saya?
Misalnya, saya dapat melakukan panggilan seperti ini:
Resources.LoadAll("PrefabsDirectory", typeof(GameObject))
Dan saya akan mendapatkan daftar GameObjects, tidak ada yang ditambahkan ke adegan saat panggilan dilakukan. Pada dasarnya, saya membuat LoadAll
metode untuk prefab saya sendiri, dan juga, saya tidak ingin membuat instance GameObjects ketika panggilan dibuat.
Destroy
GameObject. Yang menghapusnya dari tempat kejadian dan melepaskannya, membuatnya tidak dapat digunakan.
go.SetActive(false)
adalah cara terbaik untuk membuat sesuatu seperti kumpulan objek. Ini bukan yang Anda inginkan, tetapi mungkin Anda bisa memiliki sekelompok kecil objek tidak aktif yang kemudian dikloning untuk instantiasi khusus Anda.