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 Unity 2018 LTS yang mungkin mempengaruhi proyek yang ada ketika Anda meng-upgrade dari versi Unity 2017.
Catatan bahwa 2018 LTS juga dikenal sebagai 2018.4.
flex-grow
, flex-shrink
dan flex-basis
. Parameter flex-shrink dan flex-basis adalah opsional. Jika omitted, flex-basis default ke 0 dan flex-shrink default untuk 1.flex: N
setara dengan flex N 0 auto
. Ini sekarang mengikuti standar CSS dengan membuatnya setara dengan flex: N 1 0
. Untuk melestarikan semantik lama, Anda harus mengganti semua arahan flex: N
dengan file USS Anda.flex: N 0 auto
in your USS files.Perilaku fisika telah berubah dan beberapa Proyek mungkin berperilaku berbeda dengan versi baru. Sitemap
Unity 2018.3 termasuk beberapa perbaikan bug partikel dan ini dapat mempengaruhi proyek Anda yang diciptakan dalam versi sebelumnya.
Sebelum 2018.3, Editor Unity menggunakan kompiler mono C # (mcs) ketika membandingkan file C# dalam proyek. Dari 2018.3 seterusnya, Roslyn C# compiler (csc) digunakan untuk proyek yang menargetkan runtime scripting baru (.NET 4.x Equivalent). Perilaku yang berbeda dapat diperhatikan dari sakelar ke Roslyn:
csc.rsp
. SitemapPlatformDependentCompilation.File skrip UnityScript (.js) dan Boo (.boo) tidak dapat lagi dikompilasi di Editor.
Untuk informasi lebih lanjut lihat ini dari Agustus 2017 dan Anda dapat menggunakan alat unityscript2csharp untuk mengkonversi UnityScript ke C #.
Aimator Root MotionGerak simpul akar karakter, apakah itu dikendalikan oleh animasi itu sendiri atau eksternal. More info
Lihat di Glossary pemutaran telah mengubah slighly untuk memperbaiki beberapa inkonsistensi ketika otoring Root Motion Animasi di jendela Animasi.
Case | Gerakan Root Generasi | Animator.applyRootMotion | 2018.1 | 2018.3 & 2018.4 (LTS) |
---|---|---|---|---|
A | yes | yes | Terapkan Root Motion kumulatif pada Root TransformTransform di bagian atas hirarki Transforms. Dalam Prefab, transformasi akar adalah Transform paling atas di Prefab. Dalam karakter humanoid animasi, Root Transform adalah proyeksi di bidang Y Body Transform dan bersaing pada waktu yang berjalan. Pada setiap bingkai, perubahan dalam Root Transform dikomputasikan, dan kemudian ini diterapkan pada GameObject untuk membuatnya bergerak. More info Lihat di Glossary. |
Same sebagai 2018.2 |
B | no | no | Menerapkan Posisi, Rotasi dan kurva Skala seperti yang diucapkan dalam AnimasiClip. | Same sebagai 2018.2 |
C* | yes | no | Tidak ada gerakan transformasi akar | Menerapkan Posisi, Rotasi dan Skala sebagaimana diucapkan dalam AnimasiClip. |
D* | no | yes | Tidak ada gerakan transformasi akar | Terapkan Root Motion kumulatif di Root. |
Untuk kasus C dan D, untuk mencapai hasil yang sama pada 2018.3, Anda perlu menerapkan OnAnimatorMove, kemudian membuang Animator.deltaPosition
dan Animator.deltaRotation
dalam kasus di mana Anda tidak ingin menerapkan Akar Gerak.
Jika Proyek Anda menggunakan applyRootMotion
ke Posisi “mute”, Rotasi dan Animasi Timbangan di Root Transform Anda, maka Anda perlu untuk menimpa sifat Root Transform secara manual.
Penelepon aksi menu UIElements.ContextualMenu
sekarang mengambil parameter ContextualMenu.MenuAction
daripada parameter EventBase
.
ContextualMenu.InsertSeparator
mengambil parameter string
tambahan.
Fitur ini dideprediksi dalam Unity 5.1 dan telah dihapus. Anda tidak bisa lagi menggunakannya dalam proyek Anda di Unity 2018. 2. di
Lihat bagian Multiplayer dan Jaringan untuk informasi lebih lanjut tentang networkingSistem Unity yang memungkinkan game multiplayer di jaringan komputer. More info
Lihat di Glossary di Unity.
Ketika memiliki transparansi sebenarnya, Photoshop akan mengubah warna pixelUnit terkecil dalam gambar komputer. Ukuran piksel tergantung pada resolusi layar Anda. Pencahayaan pixel dihitung pada setiap piksel layar. More info
Lihat di Glossary untuk mencampurnya dengan warna matte (background). Proses menyiapkan saluran alfa dengan benar dijelaskan dalam dokumentasi kami.
Anda dapat mengabaikan disisipkan dalam dokumen ini, bagian penting adalah catatan bahwa menyatakan bahwa Anda ingin memiliki gambar "melingkat" dengan saluran alfa / masker yang terpisah (tidak memiliki transparansi). Warna-warna tweak unity untuk “remove” matte, tetapi ini telah berhenti pada 2018.2. Jika Anda memiliki PSD dengan transparansi Anda mungkin mulai melihat warna putih di tepi. Untuk memperbaiki ini, konsultasikan tautan manual di atas dan membuat saluran alfa yang sebenarnya (dalam transparansi).
Secara historis, ketika GameObject dinonaktifkan atau hancur, ia menghentikan semua menjalankan koroutin pada anak-anak MonoBehaviours. Dalam kasus tertentu, namun koroutines mulai dari metode yang disebut selama kali ini (misalnya, OnBecameInvisible()
) sebelumnya diperbolehkan untuk memulai. Ini menyebabkan perilaku khusus pesanan komponen dan, dalam beberapa kasus, crash.
Pada Unity 2018.1, koroutines kembali selama GameObject menonaktifkan atau menghancurkan tidak lagi dimulai.
API BuildPipeline, seperti BuildPipeline.BuildPlayer
, dan BuildPipeline.BuildAssetBundles
, sebelumnya kembali string. Ini kosong jika build berhasil dan berisi pesan kesalahan jika build gagal.
Pada tahun 2018.1, ini telah diganti dengan objek BuildReport baru, yang berisi informasi yang lebih kaya tentang proses build.
Untuk memeriksa apakah membangun berhasil, mengambil properti summary
dari objek laporan, dan periksa properti result - itu akan menjadi BuildResult.Succeeded
untuk membangun yang sukses. Contoh:
var report = BuildPipeline.BuildPlayer(...);
if (report.summary.result != BuildResult.Succeeded)
{
throw new Exception("Build failed");
}
Sebelumnya, untuk diberitahukan ketika pemain Unity standalone di quitting, Anda akan menerapkan metode OnApplicationQuit
pada MonoBehaviour dan untuk mengabadikan pemain dari quitting Anda akan memanggil Application.CancelQuit
.
Dua peristiwa baru telah diperkenalkan. Ini adalah Application.wantsToQuit
dan Application.quitting
. Anda dapat mendengarkan acara-acara ini untuk mendapatkan notifikasi ketika pemain mandiri Unity adalah quitting. Application.wantsToQuit
disebut ketika pemain berniat berhenti, pendengar untuk wantsToQuit
harus kembali benar atau palsu. Kembali benar jika Anda ingin pemain untuk melanjutkan quitting atau palsu untuk menimbulkan berhenti. Peristiwa Application.quitting
disebut ketika pemain dijamin berhenti dan tidak bisa dibor.
Application.CancelQuit
telah diuraikan, gunakan Application.wantsToQuit
.
using UnityEngine;
public class PlayerQuitExample
{
static bool WantsToQuit()
{
// Do you want the editor to quit?
return true;
}
static void Quit()
{
Debug.Log("Quitting the Player");
}
[RuntimeInitializeOnLoadMethod]
static void RunOnStart()
{
Application.wantsToQuit += WantsToQuit;
Application.quit += Quit;
}
}
Perubahan ini mempengaruhi platform runtime berikut: WSAPlayerX86, WSAPlayerX64, dan WSAPlayerARM.
Tidak ada penggantian untuk sekarang.
Ada TouchScreenKeyboard baru.status yang dapat ditanyakan untuk menutupi negara-negara yang terdepresi dan lebih negara.
MonoDevelop 5.9.6 telah digantikan oleh Visual Studio untuk Mac di macOS sebagai editor skrip bundel C # di installer macOS. Studio di Visual Studio 2017 Komunitas sekarang editor skrip C# yang diinstal dengan Unity di Windows.
Ketika dipasang di lokasi default di sebelah Unity executable, Unity tidak lagi mengakui MonoDevelopLingkungan pembangunan terpadu (IDE) yang disediakan oleh Unity 2017.3 dan versi sebelumnya. Dari Unity 2018.1 seterusnya, MonoDevelop digantikan oleh Visual Studio. More info
Lihat di Glossary sebagai "MonoDevelop (built-in)" editor skrip eksternal dalam preferensi. Ketika tidak ada editor kode C# dipasang dan dipilih dalam preferensi, Unity menggunakan aplikasi default sistem untuk membuka skrip C # (.cs).
Antarmuka callback buildPipeline: IPreprocessBuild
, IPostprocessBuild
dan IProcessScene
telah berubah sehingga mereka sekarang membutuhkan Anda untuk melewati objek BuildReport
. Ini menggantikan parameter sebelumnya untuk membangun path / platform target; Anda harus mengubah kode Anda jika Anda menerapkan antarmuka ini.
Kedua path build dan platform target dapat diakses melalui objek BuildReport
. Jalur build sekarang report.summary.outputPath
dan platform target adalah report.summary.platform
.
Sebelumnya, aset yang terletak di folder plugin (misalnya, di direktori dengan ekstensi .bundle, .plugin, atau .folder) diimpor menggunakan importir khusus. Tekstur yang diimpor melalui importir tekstur, AudioClips melalui importir audio, dll. Sekarang semua aset tersebut akan diimpor menggunakan impor default, yang berarti Anda tidak akan dapat merujuk aset-aset tersebut seperti yang Anda lakukan sebelumnya, karena mereka tidak lagi memiliki tipe khusus (Texture, AudioClip, dll). Plugin folder berisi paket, sehingga aset di dalam seharusnya tidak dapat diakses secara eksternal, kecuali melalui teknik akses plugin.
Untuk terus menggunakan aset tersebut, Anda harus memindahkannya di luar folder plugin Anda.
Rumus matematika yang digunakan untuk menerapkan offset pivot ke Meshs tidak benar, dan tidak konsisten dengan bagaimana bekerja untuk partikel Billboard. Untuk mencapai skala yang benar, Offset Pivot harus dikalikan dengan ukuran partikel, sehingga Offset Pivot 1 sama dengan satu lebar penuh partikel.
Untuk Mesh, ukurannya dikalikan dua kali, berarti jumlah pivot didasarkan pada ukuran partikel persegi. Hal ini memungkinkan untuk mendapatkan hasil yang konsisten dalam sistem yang mengandung berbagai partikel berukuran.
Untuk sistem menggunakan partikel ukuran yang sama, formula dapat direkayasa ulang untuk memutuskan berapa banyak untuk menyesuaikan offset pivot oleh, untuk mengkompensasi perubahan ini dalam perilaku:
Rumus lama: offset = size * size * pivot
Rumus baru: offset = size * pivot
Oleh karena itu, jika semua partikel berukuran sama:
newOffset = pivot / size
Dalam sistem di mana ukuran bervariasi antara partikel, peningkatan visual sistem yang bersangkutan akan diperlukan.
Dari 2018.1, Global IlluminationKelompok teknik yang model pencahayaan langsung dan tidak langsung untuk memberikan hasil pencahayaan yang realistis.
Lihat di Glossary (GI) didukung oleh rendering GPU dalam Unity. Setiap kasus GPU dapat mendukung GI yang berasal dari kedua Probe Cahayaprobe 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 yang berbeda, satu lightmapTekstur 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 (tetapi wilayah yang berbeda di atlas), atau satu komponen Volume Proxy Probe CahayaKomponen yang memungkinkan Anda untuk menggunakan informasi lebih banyak pencahayaan untuk GameObjects dinamis besar yang tidak dapat menggunakan peta cahaya panggang (misalnya, Sistem Partikel besar atau Mesh Berwarna). More info
Lihat di Glossary (dibakar untuk volume ruang yang mengandung semua instance). Standar naungan dan surface shadersCara merampingkan naungan menulis untuk Pipeline Render Built-in. More info
Lihat di Glossary datang dengan perubahan ini secara otomatis, tetapi Anda perlu untuk memperbarui kode naungan kustom untuk mengaktifkan fitur ini.
Pegangan kompleks di UnityEditor. Login Kontrol namespace, seperti BoxBoundsHandle, KapsulBoundsHandle, SphereBoundsHandle, ArcHandle, dan JointAngularLimitHandle memiliki delegasi yang dapat ditugaskan untuk, untuk mengubah tampilan titik kontrol mereka. Sebelumnya, menetapkan nilai null untuk delegasi ini akan jatuh kembali ke perilaku default. Menetapkan nilai null kepada mereka sekarang menghasilkan tidak ada perilaku, membuatnya lebih mudah untuk menonaktifkan pegangan kontrol tertentu. Jelas, setiap kelas sekarang memiliki titik API publik untuk metode default jika Anda perlu mengatur ulang pegangan kontrol ke perilaku default mereka.
Memenuhi 'tidak aman' C# kode sekarang membutuhkan opsi Allow ‘unsafe’ code untuk diaktifkan dalam Player SettingsPengaturan yang memungkinkan Anda mengatur berbagai pilihan khusus pemain untuk permainan akhir yang dibangun oleh Unity. More info
Lihat di Glossary untuk rakitan yang telah ditentukan (seperti Majelis-CSharp.dll) dan 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 untuk Perakitan File Perakitan. Mengaktifkan opsi ini akan membuat opsi Unity pass /unsafe ke C # compiler ketika membandingkan skrip.
Pada tahun 2017.2 dan 2017.3, Unity Package Manager memperkenalkan UnityPackageManager directory, yang digunakan untuk menyimpan file bernama manifest.json. Konten paket bisa diakses oleh skrip menggunakan jalur relatif virtual dimulai dengan PackagesPaket adalah koleksi aset untuk dibagikan dan digunakan kembali dalam Unity. Manajer Paket Unity (UPM) dapat menampilkan, menambahkan, dan menghapus paket dari proyek Anda. Paket-paket ini berasal dari Unity Package Manager dan memberikan metode mendasar untuk memberikan fungsi Unity. Namun, Unity Package Manager juga dapat menampilkan Paket Asset Store yang Anda unduh dari Asset Store. More info
Lihat di Glossary.
Pada tahun 2018.1, UnityPackageManager directory telah berganti nama menjadi Packages untuk konsistensi dengan jalur relatif virtual aset dikemas. File manifest.json harus secara otomatis dipindahkan ke direktori baru.
Hasilnya:
Jika proyek Anda menggunakan 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 (VCS) seperti PerforceSistem kontrol versi untuk manajemen perubahan file. More info
Lihat di Glossary atau Git, mungkin diperlukan untuk memperbarui konfigurasinya untuk melacak direktori Packages directory bukan direktori UnityPackageManager.
Jika proyek Anda menggunakan Nuget (atau manajer paket eksternal) dengan cara yang membuatnya menggunakan direktori Packages, konfigurasinya harus diubah untuk menggunakan direktori yang berbeda. Ini dianjurkan untuk menghilangkan kesempatan kecil bahwa paket diambil oleh Unity Package Manager, yang dapat mengakibatkan masalah keras-ke-debug seperti kesalahan kompilasi atau kesalahan impor.
Setelah bermigrasi ke direktori baru, direktori UnityPackageManager dapat dengan aman dihapus.