Saya telah menggali dokumentasi pada fitur Tilemap dari Unity 2017.2.
Apakah Unity membatasi jumlah ubin maksimum yang akan didukungnya untuk tilemap mesh tertentu?
Saya tahu bahwa setiap ubin dipakai sekali dan digunakan untuk tekstur paha depan pada Tilemap mesh pada saat runtime, jadi saya akan menebak bahwa batas jumlah quad mesh pada akhirnya tergantung pada perangkat keras, dan lebih atau kurang adalah tinggi sewenang-wenang.
Apakah itu asumsi yang benar, atau apakah ada penutup yang keras pada mesin?
Jawaban:
RAM Anda adalah batas Anda .
Tes berikut dilakukan pada sistem dengan spesifikasi ini:
Berikut ini adalah skrip yang saya jalankan yang menumbuhkan tilemap dengan mengisinya dengan ubin tunggal (32x32 piksel). Metode
Grow()
menambahkan kolom lain dan baris lain ke peta saat ini. Metode dipanggil 100 kali setiap pembaruan.Setelah beberapa menit, komputer saya kehabisan memori dan Unity crash. Pada titik itu berada di 8400x8400 (70 juta) ubin dan Unity.exe mengkonsumsi sedikit di atas 11 GB RAM menurut task manager.
Nah, tapi bagaimana dengan peta yang jarang ?
Berikut ini skrip berbeda yang menempatkan ubin tunggal pada peningkatan koordinat x dan y dalam penambahan 100 ubin:
Jejak memori Unity.exe sebenarnya meningkat sangat sedikit, yang mengisyaratkan bahwa sel tileset kosong hampir tidak memerlukan RAM. Namun, FPS terus jatuh saat tileset tumbuh. Ini mencapai 60 Fps pada 30000x30000, 30 Fps pada 60000x60000 dan 15 Fps pada 90000x90000. Fps tetap rendah ketika saya menghapus skrip saat tes-game berjalan. Jadi perlambatan ini bukan karena mengubah tilemap. Itu hanya dari rendering itu. Jadi ketika Anda ingin membuat gim dunia terbuka yang sangat besar, Anda mungkin harus menggunakan beberapa tilemaps kecil yang Anda buat dan hancurkan saat runtime.
Kesimpulan: Tilemaps yang besar tetapi sebagian besar kosong tidak menggunakan banyak RAM, tetapi merupakan hambatan rendering , bahkan ketika sebagian besar tidak ada dalam viewport kamera.
Saya kemudian bereksperimen dengan skrip ini yang menghasilkan tilemaps dengan ukuran tertentu:
Saya menggunakan skrip ini untuk menghasilkan peta 8192x8192. Butuh beberapa menit, tetapi ketika skrip selesai, itu berjalan pada 95 Fps mantap.
Kesimpulan: Peta dengan jutaan ubin layak, setidaknya pada PC game .
sumber
Update
-metode selama generasi, permainan dan editor Persatuan membeku sampai generasi selesai. Jika Anda ingin gim Anda responsif selama pembuatan peta, pindahkan generasi ke coroutine yang menghasilkan satu keping sekaligus dan menghasilkan di antaranya.