Note: Ikuti saran di bagian ini dalam urutan rilis. Misalnya, jika Anda perlu meningkatkan proyek Anda dari 2018 ke 2020, baca panduan peningkatan 2019 untuk melihat apakah ada perubahan yang Anda perlukan sebelum Anda membaca panduan peningkatan 2020.
Daftar halaman ini berubah dalam versi Unity 2019 yang mungkin mempengaruhi proyek yang ada ketika Anda meng-upgrade dari versi Unity 2018 ke 2019 LTS. Jika Anda mengupgrade dari versi Unity 2017, pertama kali melihat panduan Peningkatan ke Unity 2018 LTS.
Catatan bahwa 2019 LTS juga dikenal sebagai 2019.4.
Render PipelineRangkaian operasi yang mengambil isi dari Adegan, dan menampilkannya di layar. Unity memungkinkan Anda memilih dari pipa render yang dibangun sebelumnya, atau menulis sendiri. More info
Lihat di Glossary ringan (LWRP) sekarang adalah Pipa Render Universal (URP) di Unity 2019.3 dan kemudian.
Jika Proyek Anda menggunakan LWRP, Anda harus meningkatkan Proyek Anda untuk menggunakan URP. Untuk panduan langkah demi langkah untuk proses peningkatan, lihat .
ShaderUtil.ClearShaderErrors()
digantikan oleh ShaderUtil.ClearShaderMessages()
untuk naming konsistensi dan sekarang ditandai sebagai usang. Proyek Anda yang ada 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 secara otomatis ditingkatkan ketika Anda membukanya di Unity 2019. 4. Oktober
Login C# pekerjaan bergerak keluar dari namespace eksperimental dari UnityEngine. Login Animasi ke UnityEngine.Animations.
Unity 2019.4 secara otomatis memperbarui sebagian besar skrip Anda kecuali untuk skrip dengan metode ekstensi pekerjaan Animator berikut:
Anda harus menambahkan pernyataan UnityEngine.Animations;
secara manual ke script tersebut.
Peristiwa RenderPipeline.beginCameraRendering
yang tidak didokumentasikan telah dihapus. Anda harus mengganti ini dengan peristiwa dari kelas RenderPipeline.beginFrameRendering
.RenderPipelineManager
class.
Fungsi dilindungi statis RenderPipeline BeginFrameRendering
dan BeginCameraRendering
telah dihapus. Anda harus mengganti ini dengan tanda tangan yang mengambil ScriptableRenderContext
dalam parameter. Selain itu ada sekarang metode EndCameraRendering
dan EndFrameRendering
yang harus Anda sebut juga.
AsyncLoad
sekarang usang. Gunakan Async.LoadAssetAsync bukan.
Pipa impor aset baru tersedia dengan Unity 2019.3 dan kemudian. Jika Anda memiliki proyek yang ada, Anda dapat meng-upgrade ke Aset Pipa impor baru menggunakan Project Settings Window di Editor:
Memilih Version 2 akan memberi tahu editor yang Anda sekarang ingin menggunakan Aset Baru Impor Pipeline bersama dengan proyek ini, dan restart proyek Anda akan mengubahnya menggunakan Aset baru Impor kode Pipeline. Ini pada dasarnya memiliki efek yang sama dengan menghapus folder Perpustakaan Anda, tetapi tanpa menghapusnya. Ketika beralih menggunakan Aset impor pipa V2, Hasil impor dari Aset asli impor pipa tidak dihapus sebagai V2 menciptakan struktur folder sendiri untuk menyimpan Hasil Impornya. Proyek yang telah Anda buat di Unity 2019.2 atau lebih tua masih akan menggunakan Aset asli Impor Pipeline secara default. Ketika membuka proyek tersebut pada Unity 2019.3 untuk pertama kalinya, Anda akan mendapatkan opsi untuk meningkatkan ke Aset baru Pipeline. Jika Anda menurun, proyek Anda akan terus menggunakan Aset Impor Pipeline asli. Selanjutnya, versi yang dipilih disimpan dalam pengaturan EditorS. file aset proyek Anda, sehingga dapat dikontrol versi.
Ketika membuat Proyek baru dengan Unity 2019.3 atau yang lebih baru, Aset baru Impor Pipeline telah menjadi cara default baru untuk bekerja. Semua proyek baru yang Anda buat akan menggunakannya.
Multiple versions of the same asset are cached in the Library folder
Hingga Unity 2019.2 (dengan Aset asli Impor Pipeline), folder Perpustakaan terdiri dari GUID dari Aset menjadi nama file mereka. Dengan demikian, beralih dari platform ke platform lain akan membatalkan Hasil Impor di folder Library, menyebabkannya untuk mengekspor kembali setiap kali Anda beralih platform.
Jika Anda harus beralih kembali dan ke depan antara platform beberapa kali per hari, ini dapat dengan mudah mengambil jam, tergantung pada ukuran proyek Anda. Beberapa dari Anda telah mencari workarounds untuk ini, seperti memiliki salinan proyek Anda per platform pada mesin Anda, tetapi itu tidak skala sangat baik. Dengan Aset Baru Impor Pipeline, kami telah menghapus GUID ke File Name mapping. Karena ketergantungan untuk Aset tertentu dilacak, kita dapat Hash semuanya bersama-sama untuk membuat revisi untuk Hasil Impor Aset. Ini memungkinkan kita untuk memiliki beberapa revisi per Aset, yang kemudian berarti bahwa kita tidak lagi terikat oleh GUID ke pemetaan Nama File. Tidak memiliki persyaratan ini memungkinkan kami untuk memiliki Hasil Impor yang bekerja pada konfigurasi yang berbeda. Untuk Platform Cepat Beralih, kita bisa memiliki Hasil Impor per platform, sehingga ketika Anda beralih platform kembali dan ke depan Hasil Impor sudah ada, sehingga membuat platform beralih banyak pesanan besar lebih cepat daripada dengan Aset Impor Pipeline V1.
Caching and the Unity Accelerator
Sebagian besar importir memiliki pekerjaan yang signifikan dilakukan kepada mereka untuk meningkatkan determinsm mereka dan memiliki efek positif pada caching. Ini berarti bahwa jika Accelerator Unity digunakan, hasil impor akan diunggah ke penyimpanan terpusat di mana mesin lain dapat terhubung ke dan manfaat dari pekerjaan yang dilakukan untuk Aset yang sama pada mesin yang berbeda. Aset dengan ketergantungan dinamis dapat disimpan sekarang (misalnya prefab bersarang, naungan, dll). Untuk daftar yang lebih komprehensif dari Importir dan file terkait mereka, periksa halaman Manual Aset Baru
Caching of Scripted Importers:
ScriptedImporters dan importir dengan ketergantungan terdaftar tidak cache dengan Aset Lama Pipa Impor.
Old Behaviour
Dengan Aset Lama Impor Pipeline, switching platform yang tidak valid semua impor sebagai Hasil Impor adalah berdasarkan GUID, sehingga beralih platform akan menimpa hasil impor setiap kali.
New Behaviour
Dalam Aset Baru Impor Pipeline, beralih platform tidak validasi impor sebagai File pada disk mewakili hasil impor adalah hash dari kontennya sendiri, sehingga memastikan bahwa ketika beralih platform konten berbeda dan menghasilkan file baru, sehingga menjaga kedua versi Hasil Impor sekitar dan hanya beralih antara satu atau lain, tanpa harus mengimpor apa pun.
Dalam Aset Lama Impor Pipeline, jumlah panggilan ke fungsi OnPostProcessAllAssets
adalah non-deterministik. Berarti bahwa fungsi ini bisa disebut sekali, atau beberapa kali, untuk perubahan yang sama. Dengan Aset baru Impor Pipeline, akan ada panggilan tunggal ke OnPostProcessAllAssets
untuk mendeteksi perubahan Script (file .cs), dan satu untuk perubahan non-script (think .png, .fbx, file .wav).
Dalam Aset Lama Impor Pipeline, satu bisa memicu kompilasi dan rantai masuk ke mode bermain sementara kompilasi terjadi. Ini adalah penghemat waktu besar dalam situasi tertentu, memiliki kompilasi non-synchronous dapat menyebabkan hasil non-deterministik. Dengan Aset Baru Impor Pipeline, ini telah berubah sehingga Aset Impor Pipeline menggerakkan sebagian besar Kompilasi Script, dan seperti itu membutuhkan pendekatan deterministik, sehingga mengunci editor sampai Teks Kompilasi selesai.
Editor TilemapGameObject yang memungkinkan Anda untuk dengan cepat membuat tingkat 2D menggunakan ubin dan overlay grid. More info
Lihat di Glossary sekarang merupakan paket. Paket ini secara otomatis dipasang di Proyek Unity baru yang dibuat dengan template Proyek 2D. Untuk informasi lebih lanjut tentang menginstal paket melihat Menambahkan dan menghapus paket.
Semua kelas publik telah pindah ke UnityEditor. Catalog Unity mengkompilasi skrip Anda yang merujuk kelas ini ke dalam "Unity.2D.Tilemap.Editor" Majelis Definisi Aset. Ini adalah:
Unity akan mencoba untuk memperbarui pernyataan Tilemap using
yang relevan di script Anda tetapi silakan periksa dan mengubah jika diperlukan.
Jika Anda merujuk pada kelas Tooling Tilemap dengan skrip yang merupakan bagian dari Definisi Perakitan, Anda harus menambahkan "Unity.2D.Tilemap.Editor" Definisi sebagai Referensi Definisi Perakitan di bawah Definisi Perakitan Anda. Unity mungkin telah mengatur ini secara otomatis untuk Anda tetapi harap mengubahnya jika belum.
Jika Anda memiliki rakitan prekompiled yang merujuk pada kelas Tooling Tilemap dari versi Unity sebelumnya, Anda akan menemukan masalah ketika menggunakannya karena perubahan ini. Jika memungkinkan, silakan memperbarui dan mengulangi rakitan ini terhadap rakitan Tooling Tilemap baru.
Jika Anda memiliki rakitan prekompiled yang merujuk pada kelas Tooling Tilemap dari versi Unity sebelumnya, Anda perlu memperbarui dan mengandalkan rakitan ini untuk referensi rakitan Tooling Tilemap baru.
Contoh dari isu-isu ini ketika mengimpor perakitan yang sudah ada (sebagai kesalahan di jendela Konsol):
Kegagalan untuk mengekstrak {Class di Precompiled Assembly} kelas tipe dasar UnityEditor. GridBrush ketika memeriksa {Precompiled Assembly} Bongkar patah perakitan {Precompiled Assembly}, perakitan ini dapat menyebabkan crash di runtime
Kesalahan ini dapat disebabkan oleh pencucian dari salah satu kelas Tooling Tilemap seperti GridBrush.
Contoh dari isu-isu ini ketika menggunakan perakitan yang sudah ada (sebagai kesalahan di jendela Konsol):
TypeLoadException: Could not resolve type with token 01000011 (from typeref, class/assembly UnityEditor.GridBrush, UnityEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null)
Error: Could not load signature of {Method in Precompiled Assembly) due to: Could not resolve type with token 01000011 (from typeref, class/assembly UnityEditor.GridBrush, UnityEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null) assembly:UnityEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null type:UnityEditor.GridBrush member:(null) signature:<none>
Kesalahan ini dapat disebabkan oleh menciptakan atau memanggil salah satu metode kelas Tooling Tilemap seperti GridBrush.
Sprite Tooling (Sprite Editor Window) sekarang merupakan paket. Untuk informasi lebih lanjut tentang menginstal paket melihat Menambahkan dan menghapus paket.
Unity UI (UGUI) sekarang merupakan paket, com.unity.ugui. Anda dapat mengaksesnya dari Paket Manager (menu: Window > Paket Manager).
Unity UI(User Interface) Memungkinkan pengguna untuk berinteraksi dengan aplikasi Anda. Unity saat ini mendukung tiga sistem UI. More info
Lihat di Glossary adalah paket inti yang kapal dengan Unity. Anda tidak perlu menginstalnya di proyek baru. Ketika Anda meningkatkan Proyek Unity yang ada, diciptakan dengan versi 2019.2b1 dan sebelumnya, ke Unity 2019.2, paket ini ditambahkan secara otomatis. Definisi perakitan secara otomatis mendapatkan referensi ke perakitan uGUI. Jika Anda menginstal Unity 2019.2 overtop dari versi Unity yang lebih tua, pastikan bahwa folder GUISystem, terletak di \Editor\Data\UnityExtensions\ Unity dihapus. Jika Anda mungkin mendapatkan kesalahan redefinition kelas. Kode sumber UI Unity tidak lagi dipublikasikan ke BitBucket karena Unity menyediakannya dengan paket. Dokumentasi API UI Unity tidak lagi dalam referensi API Scripting utama. Anda dapat mengaksesnya dari bagian API Scripting dari dokumentasi paket UI Unity.
Lihat UI Elemen 2019.1 panduan peningkatan untuk informasi lebih lanjut.
Opsi .NET 3,5 Equivalent untuk Versi Scripting Runtime telah dihapus. Proyek secara otomatis dimigrasi untuk menggunakan .NET 4.x Pilihan setara saat dibuka pada tahun 2019. 2. di
Sebelum 2019.1 Penggeser Intensitas langsung hanya mempengaruhi lightmapsTekstur pra-render yang mengandung efek sumber cahaya pada objek statis di tempat kejadian. Lightmaps dilalui atas geometri adegan untuk menciptakan efek pencahayaan. More info
Lihat di Glossary ketika menggunakan Progresif LightmapperAlat dalam Unity yang bakes lightmap sesuai dengan pengaturan lampu dan geometri di tempat kejadian Anda. More info
Lihat di Glossary. Untuk EnlightenSistem pencahayaan oleh Geomerics yang digunakan dalam Unity untuk lightmapping dan untuk Mencerahkan Penerangan Global Realtime. More info
Lihat di Glossary, diterapkan pada peta light probesprobe cahaya menyimpan informasi tentang bagaimana cahaya melewati ruang di tempat kejadian Anda. Koleksi probe cahaya yang diatur dalam ruang tertentu dapat meningkatkan pencahayaan pada objek bergerak dan pemandangan LOD statis dalam ruang itu. More info
Lihat di Glossary dan cahaya. Sekarang semua backends menerapkan nilai Intensitas langsung ke peta ringan dan probe cahaya. Setelah memanggang pencahayaan lagi, Anda mungkin melihat bahwa probe akan muncul lebih terang jika nilai Intensitas Indirect dimodifikasi. Ini terbaik untuk Hapus Baked Data sebelum baking lightmaps lagi setelah upgrade.
Konstruktor yang mengambil satu string sekarang usang. Lihat documentation untuk informasi pada kelebihan beban yang didukung.
Proyek yang dibuat dengan Unity 2019 LTS memerlukan versi macOS 10.12 atau Ubuntu 16.04 atau nanti.
Multiplayer high level APISistem untuk membangun kemampuan multiplayer untuk permainan Unity. Ini dibangun di atas lapisan komunikasi real-time transportasi tingkat bawah, dan menangani banyak tugas umum yang diperlukan untuk permainan multiplayer. More info
Lihat di Glossary telah dipindahkan dari ekstensi ke paket. Ini tidak mempengaruhi kelas NetworkTransport (API tingkat rendah). Semua dependensi yang ada di mesin Unity telah dipindahkan ke paket. Ini berarti API tingkat tinggi sekarang independen kecuali untuk beberapa kait ke dalam profilerJendela yang membantu Anda untuk mengoptimalkan permainan Anda. Ini menunjukkan berapa banyak waktu yang dihabiskan di berbagai bidang permainan Anda. Sebagai contoh, dapat melaporkan persentase waktu yang dihabiskan rendering, aimating, atau dalam logika permainan Anda. More info
Lihat di Glossary yang tidak bisa dimigrasi pada saat ini.
Proyek Lebih tua yang berisi API tingkat tinggi akan memiliki paket secara otomatis ditambahkan untuk mencegah kesalahan kompiler. Ini tidak terjadi untuk Proyek baru dan Anda dapat menambahkannya jika diperlukan dari jendela Paket Manager. Lihat API tingkat tinggi multiplayer.
Pada tahun 2019.4, Unity tidak secara otomatis mendefinisikan UNITY_ADS
. Anda harus berhenti menggunakan UNITY_ADS
dalam skrip Anda, atau membuat #define global kustom baru untuk itu. Lihat halaman Platform Kompilasi tergantung untuk panduan tentang cara membuat #define global kustom baru.