Ketika mengupgrade proyek dari Unity 5.3 ke Unity 5.4, ada beberapa perubahan yang harus Anda ketahui yang dapat mempengaruhi proyek yang ada.
Banyak perubahan pada API Jaringan.
Antarmuka WebRequest
telah dipromosikan dari UnityEngine.Experimental.Networking
hingga UnityEngine.Networking
. Unity 5.2 dan 5.3 proyek yang menggunakan UnityWebRequest
harus diperbarui.
Efek gambar dengan atribut ImageEffectTransformsToLDR
tidak akan lagi diterapkan langsung ke tampilan SceneAdegan berisi lingkungan dan menu permainan Anda. Pikirkan setiap file Adegan unik sebagai tingkat yang unik. Di setiap Adegan, Anda menempatkan lingkungan, hambatan, dan dekorasi, pada dasarnya merancang dan membangun permainan Anda dalam potongan-potongan. More info
Lihat di Glossary jika ditemukan. A atribut baru ada untuk menerapkan efek pada Scene viewTampilan interaktif ke dunia yang Anda buat. Anda menggunakan Adegan Lihat untuk memilih dan posisi pemandangan, karakter, kamera, lampu, dan semua jenis lain dari Game Object. More info
Lihat di Glossary: ImageEffectAllowedInSceneView
. Aset Standar 5.4 telah ditingkatkan untuk mencerminkan perubahan ini.
Sejumlah variabel built-in shaderProgram yang berjalan di GPU. More info
Lihat di Glossary berganti nama menjadi konsistensi:
Referensi variabel akan secara otomatis berganti nama dalam file .shader dan .cginc ketika mengimpornya. Namun, setelah impor naungan tidak akan dapat digunakan dalam Unity 5.3 atau lebih awal, tanpa secara manual mengubah variabel.
Dalam Unity 5.4, array cara sifat naungan ditangani telah berubah. Sekarang ada dukungan "natif" untuk array float/vector/matrix dalam warna (melalui MaterialPropertyBlock.SetFloatArray
, Shader.SetGlobalFloatArray
dll). API baru ini memungkinkan array hingga elemen 1,023.
Cara lama menggunakan nama berukuran jumlah untuk merujuk pada elemen array individu dideprecated (misalnya _Colors0
, _Colors1
) pada kedua Material
dan MaterialPropertyBlock
. Sifat jenis ini, serialisasi dengan Material
tidak lagi dapat mengatur elemen array (tetapi jika nama array seragam dicuri oleh sejumlah masih bekerja).
Target kompilasi naungan default telah berubah menjadi "#pragma target 2.5" (SM3.0 pada DX9, DX11 9.3 tingkat fitur pada WinPhone). Anda masih dapat menargetkan DX9 SM2.0 dan DX11 9.1 tingkat fitur dengan "#pragma target 2.0".
Sebagian besar naungan bawaan target 2,5 sekarang: Pengecualian yang tidak dapat dinonaktifkan adalah Unlit, VertexLit dan fungsi tetap naungan. Dalam prakteknya, ini berarti bahwa sebagian besar naungan bawaan dan naungan baru diciptakan, secara default, tidak akan bekerja pada PC GPU yang dibuat sebelum 2004. Lihat detail.
Konstruktor kelas Material
, yang sudah diuraikan, berhenti bekerja di 5.4. Menggunakannya akan mencetak kesalahan dan mengakibatkan naungan kesalahan magenta.Material(string)
, which was already deprecated, stops working in 5.4. Using it will print an error and result in the magenta error shader.
Shader internal yang digunakan untuk membandingkan bayangan lampu directional layar-space telah pindah ke pengaturan Graphics. Jika Anda menggunakan versi disesuaikan dari bayangan cahaya arah dengan memiliki salinan naungan itu dalam proyek Anda, tidak akan lagi digunakan. Sebagai gantinya, pilih naungan kustom Anda di bawah Edit > Project Settings, lalu pilih kategori Graphics.
Refleksi probe berbagi sampler antara dua tekstur. Jika Anda mencicipi mereka secara manual di naungan Anda, dan mendapatkan "kualitas pengidentifikasi yang belum didedeks_SpecCube1" kesalahan, Anda harus mengubah kode dari UNITY_PASS_TEXCUBE(unity_SpecCube1)
hingga UNITY_PASS_TEXCUBE_SAMPLER(unity_SpecCube1,unity_SpecCube0)
.
UnityEditor.ShaderUtil.ShaderPropertyTexDim
deprecated; gunakan Texture.dimension
.
Tata letak data dari ComputeBuffers secara otomatis ditarik OpenGL shaders telah berubah untuk mencocokkan tata letak DirectX ComputeBuffers. Jika Anda menggunakan ComputeBuffers di OpenGL, lepaskan kode apa pun yang mengubah data agar sesuai dengan aturan tata letak OpenGL-specific sebelumnya. Silahkan lihat Compute Shaders untuk informasi lebih lanjut.
PlayablesAPI yang menyediakan cara untuk membuat alat, efek atau mekanisme gameplay lainnya dengan mengatur dan mengevaluasi sumber data dalam struktur seperti pohon yang dikenal sebagai PlayableGraph. More info
Lihat di Glossary sekarang merusak bukan kelas.
Struct Playable
menangani kelas Playable
asli, bukan penunjuk ke kelas Playable
asli.
struct Playable
non-null tidak menjamin bahwa Playable dapat digunakan. Gunakan metode .IsValid
untuk memverifikasi bahwa Anda Dapat digunakan.
Setiap metode yang digunakan untuk mengembalikan null untuk input kosong / output sekarang akan kembali Playable.Null
.
Playable.Null
adalah Playable yang tidak valid.
Playable.Null
dapat dilewatkan ke AddInput
, SetInput
dan SetInputs
untuk cadangan input kosong, atau untuk menonaktifkan input yang terhubung secara implicitly.
Menggunakan Playable.Null
atau tidak valid Playable sebagai input ke metode apapun, atau memanggil metode pada tidak valid Playable akan membuang pengecualian yang tepat untuk operasi.
Melengkapi Playables dengan null
sekarang berarti. Bandingkan dengan Playable.Null
.
Playables harus dialokasikan menggunakan metode statis Create
dari kelas yang ingin Anda gunakan.
Playables harus didelokasi menggunakan metode .Destroy
pada pegangan yang dapat dimainkan.
Playables yang tidak dialokasikan akan bocor.
Playables dikonversi kestruktur untuk meningkatkan kinerja dengan menghindari tinju / kotak (info lebih lanjut tentang tinju).
Casting sebuah Playable
ke objek, implicitly atau eksplisit, akan menyebabkan kotak / kotak masuk, sehingga mengurangi kinerja.
Menwarisi dari kelas Playable akan menyebabkan kotak / kotak kasus kelas anak.
Karena hanya animasi tersedia untuk sekarang, ScriptPlayable
s telah diganti oleh CustomAnimationPlayables
.
Tidak lagi mungkin untuk berasal dari dasar Playables. Cukup agregat Playables di Playables kustom Anda.
Ikuti petunjuk ini untuk meningkatkan proyek Oculus VR Anda dari Unity 5.3:
Dukungan realitas virtual yang dapat diandalkan.
Hapus Oculus Spatializer.
Sudah ada perubahan pada peristiwa yang dipicu ketika menjerit GameObjectsObjek 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 diurutkan kembali pada Unity 5.4. Sibling GameObjects adalah GameObjects yang semuanya berbagi orang tua yang sama di jendela Hierarchy. Dalam versi sebelumnya Unity, mengubah urutan menjerit GameObjects akan menyebabkan setiap saudara untuk menerima panggilan OnTransformParentChanged
. Dalam 5.4, saudara GameObjects tidak lagi mendapatkan panggilan ini. Sebagai gantinya, GameObject menerima panggilan tunggal ke OnTransformChildrenChanged
.
Ini berarti bahwa jika Anda memiliki kode dalam proyek Anda yang bergantung pada OnTransformParentChanged yang disebut ketika saudara diurutkan ulang, panggilan ini tidak akan lagi terjadi, dan Anda perlu memperbarui kode Anda untuk mengambil tindakan ketika objek induk menerima panggilan OnTransformChildrenChanged.
Perubahan ini karena perilaku baru memberikan kinerja yang lebih baik.
Karena optimisasi pada Transform componentKomponen Transform menentukan Posisi, Rotasi, dan Skala setiap objek di tempat kejadian. Setiap GameObject memiliki Transform. More info
Lihat di Glossary, menggunakan bagian Transform.SetParent
atau Destroy
ing hirarki yang melibatkan 1000+ GameObjects sekarang dapat memakan waktu lama. Memanggil SetParent
pada atau mengatur ulang hierarki besar seperti saat runtime tidak dianjurkan.
Format proyek Visual Studio yang dihasilkan diperbarui untuk semua. SDK Perbaiki membangun kembali yang berlebihan ketika tidak ada yang berubah dalam proyek yang dihasilkan. Anda mungkin perlu menghapus hasil yang ada *.csproj, terutama jika dibangun dengan opsi "Generate C#" diperiksa, sehingga Unity dapat menggenerasinya.scripting backendKerangka kerja yang skrip di Unity. Unity mendukung tiga backend scripting yang berbeda tergantung pada platform target: Mono, .NET dan IL2CPP. Platform Windows Universal, namun hanya mendukung dua: .NET dan IL2CPP. More info
Lihat di Glossary SDKs. This fixes excessive rebuilding when nothing has changed in the generated project. You might need to delete your existing generated *.csproj, especially if it was built with the “Generate C# projects” option checked, so Unity can regenerate it.
Ada dua kesalahan serialisasi skrip baru untuk menangkap ketika API Unity disebut dari konstruktor dan initializer lapangan selama deserialization (loading). Deserialization mungkin terjadi pada benang yang berbeda ke benang utama dan karena itu tidak aman untuk memanggil API Unity selama deserialisasi. Ada rincian lebih lanjut di bagian bawah (Script Serialization)[script-Serialization] halaman di Unity Manual.
Editor sekarang mendukung resolusi Retina di Mac OS X dengan teks resolusi tinggi, UI(User Interface) Memungkinkan pengguna untuk berinteraksi dengan aplikasi Anda. Unity saat ini mendukung tiga sistem UI. More info
Lihat di Glossary dan pandangan 3D.
Editor GUI sekarang didefinisikan dalam ruang titik daripada ruang pixelUnit terkecil dalam gambar komputer. Ukuran piksel tergantung pada resolusi layar Anda. Pencahayaan pixel dihitung pada setiap piksel layar. More info
Lihat di Glossary. Pada tampilan resolusi standar, tidak ada perubahan karena setiap titik adalah satu pixel. On Retina menampilkan, namun setiap titik adalah dua piksel. Layar saat ini ke skala UI tersedia sebagai EditorGUIUtility.pixelsPerPoint
. Sejak Unity dapat memiliki beberapa jendela, masing-masing monitor dengan kepadatan pixel yang berbeda, nilai ini mungkin berubah antara pandangan.
Jika kode editor Anda menggunakan metode Editor/GUI/Layout biasa, cukup mungkin bahwa Anda tidak perlu mengubah apa pun.
Jika Anda menggunakan Screen.width/height
, beralih ke EditorWindow.position.width/height
. Ini karena ukuran layar diukur dalam piksel, tetapi UI didefinisikan dalam poin. Untuk editor kustom yang ditampilkan dalam 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, gunakan EditorGUIUtility.currentViewWidth
, yang benar akun untuk kehadiran bar gulir.
Jika Anda menampilkan konten lain di UI Anda, seperti RenderTexture, Anda mungkin menghitung ukurannya dalam poin. Untuk mendukung resolusi Retina, Anda harus mengonversi ukuran titik Anda ke ukuran piksel. Ada metode baru dalam EditorGUIUtility untuk ini.
Jika Anda menggunakan GUIStyles dengan latar belakang kustom, Anda dapat menambahkan versi Retina dari tekstur latar belakang dengan menempatkan satu tekstur dengan dimensi ganda persis ke array 'GUIStyleState.scaledBackgrounds'.
Mac dengan perangkat keras grafis yang didukung mungkin mengalami tingkat bingkai editor lambat yang tidak dapat diterima dalam pandangan 3D karena peningkatan resolusi. dukungan retina dapat dinonaktifkan dengan memilih “Get Info” pada Unity.app di Finder, dan memeriksa “Open in Low Resolution”.
There are:
Perilaku 5.3 adalah bahwa sistem animasi selalu mengirimkan pesan pembaruan Transform untuk animation curvesMemungkinkan Anda untuk menambahkan data ke klip impor sehingga Anda dapat menghidupkan waktu item lain berdasarkan keadaan animator. Misalnya, untuk set permainan dalam kondisi icy, Anda dapat menggunakan kurva animasi ekstra untuk mengontrol tingkat emisi sistem partikel untuk menunjukkan napas kondensor pemain di udara dingin. More info
Lihat di Glossary yang konstan. Pesan ini bangun RigidbodiesKomponen yang memungkinkan GameObject untuk dipengaruhi oleh gravitasi simulasi dan kekuatan lainnya. More info
Lihat di Glossary dan memperbaiki ini terbukti sangat berisiko dalam 5.3.
Perilaku 5.4 adalah bahwa jika tidak ada perubahan posisi, orang kaku tidak bangun (sebagai kebanyakan orang akan mengharapkan).
Jika proyek Anda bergantung pada perilaku 5.3 dari waking Rigidbody sepanjang waktu, mungkin tidak bekerja seperti yang diharapkan dalam 5.4.
Target Unity Web Player telah dijatuhkan dari Unity 5.4. Jika Anda meningkatkan proyek Anda ke 5.4, Anda tidak akan dapat menyebarkannya ke platform Web Player.
Jika Anda memiliki proyek Web Player legacy yang Anda butuhkan untuk mempertahankan, tidak meningkatkannya ke 5.4 atau nanti.