Peningkatan ke Unity 5.5
5.4 Perubahan API Jaringan

Peningkatan ke Unity 5.4

Ketika mengupgrade proyek dari Unity 5.3 ke Unity 5.4, ada beberapa perubahan yang harus Anda ketahui yang dapat mempengaruhi proyek yang ada.

Jaringan: Perubahan API Layanan Multiplayer

Banyak perubahan pada API Jaringan.

Jaringan: WebRequest tidak lagi eksperimental

Antarmuka WebRequest telah dipromosikan dari UnityEngine.Experimental.Networking hingga UnityEngine.Networking. Unity 5.2 dan 5.3 proyek yang menggunakan UnityWebRequest harus diperbarui.

Tampilan Adegan: Pemetaan nada tidak secara otomatis diterapkan

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.

Naungan: variabel renamed

Sejumlah variabel built-in shaderProgram yang berjalan di GPU. More info
Lihat di Glossary
berganti nama menjadi konsistensi:

  • _Object2World _World2Object are now unity_ObjectToWorld and unity_WorldToObject
  • _World2Shadow sekarang unity_WorldToShadow[0], _World2Shadow1 adalah unity_WorldToShadow[1] dll.
  • _LightMatrix0 unity_WorldToLight
  • _WorldToCamera, _CameraToWorld, _Projector, _ProjectorDistance, _ProjectorClip, _GUIClipTextureMatrix dan unity sekarang semua telah ditetapkan dengan

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.

Naungan: array seragam

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).

Naungan: Banyak perubahan dalam 5.4

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.

ComputeBuffers

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.

Playables: Migrasi ke 5.4

  • 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, ScriptPlayables telah diganti oleh CustomAnimationPlayables.

  • Tidak lagi mungkin untuk berasal dari dasar Playables. Cukup agregat Playables di Playables kustom Anda.

Login: Tingkatkan proyek Anda dari Unity 5.3

Ikuti petunjuk ini untuk meningkatkan proyek Oculus VR Anda dari Unity 5.3:

Dukungan realitas virtual yang dapat diandalkan.

  • Buka pengaturan Player (menu: Edit > Project Settings, lalu pilih kategori Player).
  • Pilih Other Settings dan periksa kotak cemen. Gunakan daftar SDK Virtual Reality ditampilkan di bawah kotak centang untuk menambahkan dan menghapus Perangkat Realitas Virtual untuk setiap target build.Virtual Reality Supported checkbox. Use the Virtual Reality SDK list displayed below the checkbox to add and remove Virtual Reality Devices for each build target.

Hapus Oculus Spatializer.

  • Hapus Plugin Audio Oculus Spatializer dari proyek Anda melalui pengaturan Audio (menu: Edit > Project Settings, kemudian pilih kategori Audio), menggunakan menu dropdown Plugin Spatializer. Ini dapat bertentangan dengan spasializer asli dan mencegah bangunan.

Mengurutkan saudara

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.

Hirarkis GameObject besar di runtime

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 Destroying hirarki yang melibatkan 1000+ GameObjects sekarang dapat memakan waktu lama. Memanggil SetParent pada atau mengatur ulang hierarki besar seperti saat runtime tidak dianjurkan.

Windows Server

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.

Kesalahan serialisasi Script

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.

Mendukung layar Retina

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”.

Fisika: Mesh dan fisika mengubah drift

There are:

  • Perubahan untuk menolak mesh fisika jika mengandung vertik tidak valid.
  • Perubahan untuk menghindari fisika mengubah drift dengan tidak mengirim pembaruan Transformant.

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.

Web Server

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.

Peningkatan ke Unity 5.5
5.4 Perubahan API Jaringan