Unity menyegarkan Database Aset dalam situasi berikut:
Beberapa API Aset lain memicu Refresh() tetapi hanya untuk Aset yang Anda tentukan. Contoh CreateAsset() dan ImportAsset().
Unity melakukan langkah-langkah berikut selama Database Aset segar:
Unity melakukan langkah-langkah yang dijelaskan di bagian sebelumnya selama Aset Database refresh. Bagian ini menjelaskan proses ini secara lebih rinci. Langkah-langkah ini terjadi di dalam lingkaran, dan beberapa langkah mungkin menyebabkan proses refresh untuk restart (misalnya, jika mengimpor Aset menciptakan Aset lain yang Unity juga perlu impor).
Unity restart loop refresh database Asset di bawah kondisi berikut:
Ketika Unity mencari perubahan pada disk, itu memindai folder Assets
dan Packages
di Anda Proyek untuk memeriksa apakah file apa pun telah ditambahkan, dimodifikasi, atau dihapus sejak pemindaian terakhir. Ini mengumpulkan perubahan dalam daftar untuk memproses dalam langkah berikutnya.
Setelah Unity mengumpulkan daftar file, kemudian mendapatkan hashe file untuk file yang telah ditambahkan atau dimodifikasi. Ini kemudian memperbarui Database Aset dengan GUID untuk file-file tersebut, dan menghapus entri untuk file yang terdeteksi sebagai dihapus.
Aset Database melacak dua jenis dependensi aset: static dependencies dan dynamic dependencies. Jika ada ketergantungan perubahan Aset, Unity memicu reimpor aset itu.
Ketergantungan statis adalah nilai, pengaturan atau properti yang diimpor tergantung pada. Ketergantungan statis dikenal sebelum Aset diimpor, dan tidak dipengaruhi oleh perilaku importir selama proses impor. Jika ketergantungan statis dari perubahan Aset, Transportasi ulang Unity yang Aset.
Beberapa ketergantungan statis umum adalah:
Unity biasanya menemukan ketergantungan dinamis aset selama proses impor. Ini karena ketergantungan ini didefinisikan oleh konten aset sumber. Sebagai contoh, ShaderProgram yang berjalan di GPU. More info
Lihat di Glossary dapat merujuk Shader lain, dan PrefabJenis aset yang memungkinkan Anda untuk menyimpan GameObject lengkap dengan komponen dan properti. Prefab bertindak sebagai template dari mana Anda dapat membuat instance objek baru di tempat kejadian. More info
Lihat di Glossary mungkin tergantung pada Prefab lain.
Importir mungkin juga menggunakan state global berdasarkan konten aset sumber, dalam hal itu juga menjadi ketergantungan dinamis. Contoh ini adalah platform target, ruang warna Proyek, API grafis, versi runtime scripting, atau state compressionMetode menyimpan data yang mengurangi jumlah ruang penyimpanan yang dibutuhkan. Kompresi Tekstur, Kompresi Animasi, Kompresi Audio, Membangun Kompresi.
Lihat di Glossary Tekstur.
Unity menyimpan ketergantungan dinamis aset dalam Aset Impor Konteks.
Dalam daftar file yang berubah atau ditambahkan, Unity mengumpulkan yang berkaitan dengan kode, dan mengirimkannya ke pipa kompilasi skrip. compiler menghasilkan rakitan dari file skrip dan file definisi perakitan di Proyek Anda. Untuk informasi lebih lanjut tentang langkah ini, lihat dokumentasi di .
Jika Unity mendeteksi perubahan skrip, isi ulang domain C#. Hal ini karena pengimpor Scripted baru dapat diciptakan, dan logika mereka berpotensi dapat mempengaruhi hasil impor aset dalam antrian Refresh. Langkah ini restart Refresh() untuk memastikan pengelola Scripted baru mengambil efek.
Setelah Unity mengimpor semua aset terkait kode dan memuat ulang domain, kemudian bergerak ke Aset yang tersisa. Sitemap Proses impor aset yang jenis aset, dan mengidentifikasi jenis file yang harus diimpor berdasarkan ekstensi nama file. Misalnya, TextureImporter bertanggung jawab untuk mengimpor .jpg, .png dan .psd file, antara lain.
Ada dua jenis importir:
Proses unity semua importir asli pertama, dan kemudian semua importir skrip dalam fase terpisah.
Ketika importir mengimpor file aset, Unity menghasilkan AssetImportContext. AsetImportContext melaporkan Ketergantungan Statis aset.
Juga, selama langkah impor, ada sejumlah callback yang terjadi.
Impor Aset Preprocess Sitemap
OnPreprocessAsset
OnPreprocessAnimation
OnPreprocessAudio
OnPreprocessModel
OnPreprocessSpeedTree
OnPreprocessTexture
Postprocess Asset Importir Panggilan:
OnAssignMaterialModel
OnPostprocessAnimation
OnPostprocessAssetbundleNameChanged
OnPostprocessAudio
OnPostprocessCubemap
OnPostprocessGameObjectWithAnimatedUserProperties
OnPostprocessGameObjectWithUserProperties
OnPostprocessMaterial
OnPostprocessMeshHierarchy
OnPostprocessModel
OnPostprocessSpeedTree
OnPostprocessSprites
OnPostprocessTexture
Satu panggilan pemrosesan pasca akhir yang dipicu setelah semua impor selesai.
Ada sejumlah hal yang dapat terjadi yang akan me-restart proses refresh pada folder Aset, beberapa dari mereka menjadi:
Jika impor aset gagal
Jika aset dimodifikasi selama fase impor Refresh. Sebagai contoh, jika file dalam daftar akan dimodifikasi sehingga tanggal modifikasinya tidak apa yang ada dalam refresh sebelumnya. Ini dapat terjadi jika Anda mulai menarik file dari sistem Version ControlSistem untuk mengelola perubahan file. Anda dapat menggunakan Unity bersama dengan alat kontrol versi yang paling umum, termasuk Perforce, Git, Mercurial dan PlasticSCM. More info
Lihat di Glossary sementara Editor memiliki fokus.
Jika Aset menciptakan aset lain selama impor. Contoh: Ketika mengimpor FBX, tekstur dapat diekstrak dari FBX dan ditempatkan ke proyek, dan ini berarti bahwa Unity harus mengimpor tekstur (dan setiap artefak yang mereka hasilkan).
Jika Anda memaksa re-import file selama salah satu callback proses pre/post atau dalam OnPostProcessAllAssets, misalnya, menggunakan AssetDatabase.ForceReserializeAssets
atau AssetImport.SaveAndReimport
. Catatan, Anda harus berhati-hati tidak menyebabkan loop reimport tak terbatas jika Anda melakukan ini.
Jika Reload Majelis terjadi setelah membandingkan scriptsSepotong kode yang memungkinkan Anda untuk membuat Komponen Anda sendiri, memicu peristiwa permainan, memodifikasi sifat komponen dari waktu ke waktu dan menanggapi input pengguna dengan cara apa pun yang Anda sukai. More info
Lihat di Glossary. Jika Anda menghasilkan file C# selama proses refresh, bahwa file baru harus dikompilasi, jadi Unity restart menyegarkan.
Jika Anda menyimpan aset sebagai "Satu teks" tetapi Aset harus serialisasi sebagai biner, restart akan terjadi. (Sebagai contoh, Adegan dengan Terrains di dalamnya harus di serialisasi sebagai Binary, karena data terrain akan tidak berubah jika dipandang sebagai array karakter dalam file teks.)
Reloading panas mengacu pada proses di mana impor Unity dan menerapkan perubahan pada skrip dan aset saat Editor terbuka. Ini mungkin terjadi saat Editor berada di Play Mode atau di luar Play Mode. Anda tidak harus me-restart aplikasi Anda atau Editor untuk perubahan untuk mengambil efek.
Ketika Anda mengubah dan menyimpan skrip, beban panas Unity semua data skrip proyek. Toko pertama semua nilai variabel serializable di semua skrip yang dimuat, memuat ulang skrip, kemudian mengembalikan nilai. Semua data yang disimpan dalam variabel non-serializable hilang selama reload panas.
Sitemap Aset impor unity yang diimpor oleh (built-in DefaultImporter) [BuiltInImporters] pertama, dan kemudian aset skrip, sehingga tidak menyebut PostProcess yang ditentukan skrip SemuaAssets untuk aset default.Note: Unity imports assets imported by the (built-in DefaultImporter)[BuiltInImporters] first, and then script assets, so it does not call any script-defined PostProcessAllAssets for default assets.
Setelah semua langkah ini selesai, Refresh()
selesai. Artifact Database diperbarui dengan informasi yang relevan, dan file hasil impor yang diperlukan dihasilkan pada disk.