Unity 4.0 mengubah bagaimana keadaan aktif GameObjects ditangani. keadaan aktif GameObjectObjek mendasar dalam adegan Unity, yang dapat mewakili karakter, props, pemandangan, kamera, waypoints, dan banyak lagi. Fungsi GameObject didefinisikan oleh Komponen yang melekat padanya. More info
Lihat di Glossary sekarang diwariskan oleh anak GameObjects, sehingga setiap GameObject yang tidak aktif juga akan menyebabkan anaknya tidak aktif. Kami percaya bahwa perilaku baru lebih masuk akal daripada yang lama, dan harus selalu menjadi cara ini. Juga, sistem GUI baru mendatang sangat tergantung pada perilaku 4.0 baru, dan tidak akan mungkin tanpa itu. Sayangnya, ini mungkin memerlukan beberapa pekerjaan untuk memperbaiki proyek yang ada untuk bekerja dengan perilaku Unity 4.0 baru, dan ini adalah perubahan:
Anda memiliki tiga GameObjects, A, B dan C, sehingga B dan C adalah anak-anak A.
Untuk memvisualisasikan perubahan ini, dalam editor Unity 4.0, setiap GameObject yang tidak aktif (baik karena properti .activeSelf sendiri diatur ke false, atau salah satu orang tua itu), akan diabukan di hirarki, dan memiliki ikon kelabu di inspectorJendela Unity yang menampilkan informasi tentang Pengaturan GameObject yang dipilih saat ini, aset atau proyek, memungkinkan Anda untuk memeriksa dan mengedit nilai. More info
Lihat di Glossary. Properti .activeSelf GameObject sendiri tercermin oleh kotak centang aktif, yang dapat dialihkan terlepas dari keadaan induk (tetapi hanya akan mengaktifkan GameObject jika semua orang tua aktif).
Selama pengembangan 4.0 pipa impor aset kami telah berubah dalam beberapa cara yang signifikan internal untuk meningkatkan kinerja, penggunaan memori dan determinisme. Untuk sebagian besar perubahan ini tidak memiliki dampak pada pengguna dengan satu pengecualian: Objek dalam aset tidak dilakukan terus-menerus sampai akhir pipa impor dan versi aset yang sebelumnya diimpor akan benar-benar diganti.
Bagian pertama berarti bahwa selama pemrosesan pasca Anda tidak bisa mendapatkan referensi yang benar terhadap benda-benda dalam aset dan bagian kedua berarti bahwa jika Anda menggunakan referensi ke versi aset yang sebelumnya diimpor selama pemrosesan pasca modifikasi toko modifikasi modifikasi yang akan hilang.
Pertimbangkan contoh kecil ini:
public class ModelPostprocessor : AssetPostprocessor
{
public void OnPostprocessModel(GameObject go)
{
PrefabUtility.CreatePrefab("Prefabs/" + go.name, go);
}
}
Dalam Unity 3,5 ini akan membuat prefab dengan semua referensi yang benar ke jala dan sebagainya karena semua jala sudah telah dibuat tetap, tetapi karena ini bukan kasus di Unity 4.0 prosesor pos yang sama akan membuat prefab di mana semua referensi ke jala hilang, hanya karena Unity 4.0 belum tahu bagaimana menyelesaikan referensi untuk benda-benda di model asli prefab. Untuk benar menyalin modelprefab di untuk prefab Anda harus menggunakan OnPostProcessAllAssets untuk pergi melalui semua aset impor, menemukan modelprefab dan membuat prefab baru seperti di atas.
Contoh kedua adalah sedikit lebih kompleks tetapi sebenarnya kasus penggunaan yang telah kita lihat dalam 3,5 yang rusak di 4.0. Berikut ini adalah ScriptableObject sederhana dengan referensi ke meshGrafik utama primitif Unity. Mesh membuat sebagian besar dunia 3D Anda. Unity mendukung mesh poligon triangulat atau Quadrangulasi. Nurbs, Nurms, permukaan Subdiv harus dikonversi ke poligon. More info
Lihat di Glossary.
public class Referencer : ScriptableObject
{
public Mesh myMesh;
}
Kami menggunakan ScriptableObject ini untuk membuat aset dengan referensi ke jala dalam model, kemudian dalam prosesor posting kami kami mengambil referensi itu dan memberikan nama yang berbeda, hasil akhir yang ketika kami telah mengekspor kembali model nama mesh akan apa prosesor pos menentukan.
public class Postprocess : AssetPostprocessor
{
public void OnPostprocessModel(GameObject go)
{
Referencer myRef = (Referencer)AssetDatabase.LoadAssetAtPath("Assets/MyRef.asset", typeof(Referencer));
myRef.myMesh.name = "AwesomeMesh";
}
}
Ini bekerja dengan baik di Unity 3,5 tetapi pada Unity 4.0 model yang sudah diimpor akan benar-benar diganti, sehingga mengubah nama mesh dari impor sebelumnya tidak akan berpengaruh. Solusi di sini adalah untuk menemukan jala dengan beberapa cara lain dan mengubah namanya. Apa yang paling penting untuk dicatat adalah bahwa dalam Unity 4.0 Anda harus HANYA memodifikasi input yang diberikan ke prosesor posting dan tidak bergantung pada versi yang sebelumnya diimpor dari aset yang sama.
Unity 4.0 menambahkan opsi “Read/Write Enabled” di Pengaturan impor model. Ketika opsi ini dimatikan, ia menyimpan memori sejak Unity dapat membongkar salinan data mesh dalam permainan.
Namun, jika Anda menskalakan atau memutakhirkan jala pada runtime dengan skala non-uniform, Anda mungkin harus mengaktifkan “Read/Write Enabled” dalam pengaturan impor mereka. Alasannya adalah scaling non-uniform membutuhkan data mesh untuk disimpan dalam memori. Biasanya kami mendeteksi ini pada waktu build, tetapi ketika jala berskala atau dikelok-kelokkan pada runtime Anda perlu mengatur ini secara manual. Jika tidak mereka mungkin tidak diberikan dalam permainan membangun dengan benar.
Model Importer di Unity 4.0 telah menjadi lebih baik pada optimasi jala. The “Mesh Optimization” checkbox di Model Importer di Unity 4.0 sekarang diaktifkan secara default, dan akan memesan vertices di Mesh Anda untuk kinerja optimal. Anda mungkin memiliki beberapa kode atau efek post-processingProses yang meningkatkan visual produk dengan menerapkan filter dan efek sebelum gambar muncul di layar. Anda dapat menggunakan efek pasca proses untuk mensimulasikan kamera fisik dan sifat film, misalnya Bloom dan Kedalaman Lapangan. More info pemrosesan pos, pasca proses, pasca proses
Lihat di Glossary dalam proyek Anda yang tergantung pada urutan simpul mesh Anda, dan ini mungkin rusak oleh perubahan ini. Dalam hal itu, matikan “Mesh Optimization” di importir Mesh. Terutama, jika Anda menggunakan komponen SkinnedCloth, optimasi mesh akan menyebabkan pemetaan berat simpul Anda untuk berubah. Jadi jika Anda menggunakan SkinnedCloth dalam proyek yang diimpor dari 3,5, Anda perlu mematikan “Mesh Optimization” untuk mesh yang terkena, atau mengkonfigurasi ulang berat simpul Anda untuk mencocokkan urutan simpul baru.
Dengan input sensor seluler Unity 4.0 mendapat keselarasan yang lebih baik antara platform, yang berarti Anda dapat menulis lebih sedikit kode saat menangani input khas pada platform seluler. Sekarang akselerasi dan input gyro akan mengikuti orientasi layar dengan cara yang sama baik di platform iOS dan Android. Untuk mengambil keuntungan dari perubahan ini Anda harus mengisi ulang kode input Anda dan menghapus platform dan orientasi layar kode spesifik ketika menangani percepatan dan input gyro. Anda masih bisa mendapatkan perilaku lama di iOS dengan mengatur Input.compensateSensors ke false.