API Updater
Peningkatan ke Unity 2021.1

Peningkatan ke Unity 2021.2

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 2021.2 yang mungkin mempengaruhi proyek yang ada ketika Anda meng-upgrade dari versi 2021.1 beta ke 2021.2.

Pencahayaan lingkungan: probe Ambient dan probe refleksi skybox sekarang secara otomatis dipanggang

Unity's Progressive LightmapperA tool in Unity that bakes lightmaps according to the arrangement of lights and geometry in your scene. More info
See in Glossary
sekarang secara otomatis menghasilkan probe ambient dan skyboxJenis khusus Bahan yang digunakan untuk mewakili langit. Biasanya enam sisi. More info
Lihat di Glossary
reflection probeKomponen rendering yang menangkap pandangan bulat dari sekitarnya di semua arah, seperti kamera. Gambar yang ditangkap kemudian disimpan sebagai kubus yang dapat digunakan oleh benda dengan bahan reflektif. More info
Lihat di Glossary
untuk setiap 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
secara default. Ini berarti bahwa adegan secara otomatis menerima pencahayaan lingkungan sesuai dengan pengaturan di tab Environment di panel pengaturan Lighting. Editor memperbarui probe ambient dan probe refleksi skybox setiap kali perubahan pencahayaan lingkungan, sampai Anda menghasilkan pencahayaan. Ketika Anda bake dengan kontrol Generate Lighting, Editor berhenti memperbarui probe, dan hanya memperbarui mereka lagi di bake berikutnya. Ketika Anda mengaktifkan opsi Auto Generate, Editor terus memperbarui probe setiap kali perubahan pencahayaan lingkungan. Jika Anda menghasilkan pencahayaan dan kemudian menghapus data pencahayaan ini dengan menghapus Aset Data Pencahayaan dari proyek, Editor secara otomatis menghasilkan probe ambient dan probe refleksi skybox lagi.

Ada satu situasi yang membutuhkan tindakan ketika Anda meningkatkan proyek. Ini adalah ketika Anda tidak ingin memiliki kontribusi pencahayaan Lingkungan dalam proyek yang juga:

  • Tidak memiliki Aset Data Pencahayaan.
  • Tidak memiliki Auto Generate diaktifkan.
  • Memiliki kontribusi lingkungan yang ditetapkan ke warna selain hitam.

Dalam situasi ini, arahkan ke Window > Rendering > Lighting Settings > Environment dan menonaktifkan kontribusi lingkungan dari probe ambient yang dihasilkan secara otomatis dan probe refleksi skybox dengan membuat salah satu perubahan berikut:

  • Opsi 1: Mengatur Intensity Multiplier ke 0.
  • Opsi 2: Gunakan Skybox Material hitam.
  • Opsi 3: Gunakan warna hitam dalam mode Color atau Gradient untuk Source.

Sistem Partikel Bidang Angkatan

Sebelumnya, beberapa properti Lapangan Angkatan berperilaku berbeda pada tingkat bingkai yang berbeda (atau jika menggunakan Skala Waktu dalam pengaturan Manajer Waktu)

Particle SystemKomponen yang mensimulasikan entitas fluida seperti cairan, awan dan nyala dengan menghasilkan dan memikat sejumlah besar gambar 2D kecil di tempat kejadian. More info
Lihat di Glossary
sekarang menggunakan tingkat bingkai referensi 30fps untuk berfungsi sebagai dasar untuk simulasi. Jika aplikasi Anda berjalan pada tingkat bingkai yang berbeda, pengaturan berikut mungkin berperilaku berbeda dibandingkan dengan versi Unity sebelumnya:

  • Gravity
  • Rotation
  • Vector Fields

Jika pengaturan ini dipengaruhi, menyesuaikan kekuatan daerah yang terkena untuk mendapatkan penampilan yang diinginkan.

Sistem Partikel Mulai Delay + Tingkat emisi Jarak

Sebelumnya, Tingkat emisi jarak jauh mengabaikan pengaturan Start Delay. Sekarang, jika pengaturan Start Delay ditentukan, penundaan awal emisi berbasis jarak.

Jika bidang ini sebelumnya ditetapkan, Anda mungkin perlu menyesuaikannya.

BuildReport - PackedAssets

PackedAssets.file telah ditandai usang tanpa penggantian langsung. Sebelumnya ini mengadakan integer menandakan id file atau indeks ke BuildReport.files Untuk melihat file BuildReport sekarang, gunakan PackedAssets.shortPath.

Terrain API dari eksperimental (WIP)

API TerrainPemandangan di tempat kejadian Anda. Terrain GameObject menambahkan pesawat datar besar untuk adegan Anda dan Anda dapat menggunakan jendela Inspektur Terrain untuk menciptakan lanskap rinci. More info
Lihat di Glossary
eksperimental telah dipindahkan ke ruang nama yang tidak berpengalaman. Ada juga beberapa perubahan kecil lainnya ke API Terrain. Jika Anda menggunakan API Terrain eksperimental, gunakan API berikut bukan:

  • UnityEngine.TerrainTools;
  • UnityEditor.TerrainTools;
  • UnityEngine.TerrainUtils;

Berikut adalah daftar perubahan API lengkap:

  • Dalam kebanyakan kasus, UnityEngine.Experimental.TerrainAPI dan UnityEditor.Experimental.TerrainAPI sekarang UnityEngine.TerrainTools dan UnityEditor.TerrainTools, masing-masing. Beberapa API runtime telah pindah ke ruang nama UnityEngine.TerrainUtils baru.
  • GetDesc() dari kelas TerrainPaintTool<T> berganti nama menjadi GetDescription().
  • Kelas TerrainUtility telah pindah dari UnityEngine.Experimental.TerrainAPI ke UnityEngine.TerrainUtils.
  • Kelas TerrainUtility.TerrainMap tidak lagi merupakan kelas dalam dan milik ruang nama UnityEngine.TerrainUtils.
  • Struktur TerrainMap.TileCoord tidak lagi dalam kelas TerrainMap, telah berganti nama menjadi TerrainTileCoord, dan sekarang juga merupakan bagian dari ruang nama UnityEngine.TerrainUtils.
  • The UnityEditor.Experimental.TerrainAPI.BrushPreviewMode enum telah berganti nama menjadi TerrainBrushPreviewMode dan pindah ke ruang nama UnityEditor.TerrainTools.
  • 0 Artikel - 0,00 € Ini juga telah berganti nama menjadi TerrainPaintUtilityEditor.BuiltinPaintMaterialPasses.TerrainPaintUtilityEditor class and into the UnityEditor.TerrainTools namespace. It has also been renamed to TerrainBuiltinPaintMaterialPasses.
  • Tiga fungsi ShowBrushGUI dalam IOnInspectorGUI telah digabungkan menjadi satu fungsi dengan nilai parameter default bukan fungsi yang berlebihan.
  • TerrainFilter telah dihapus. Gunakan System.Predicate<Terrain> bukan.

Tekstur2D.Resize berganti nama menjadi Reinitialize

Texture2D.Resize dan kelebihan bebannya telah berganti nama menjadi Texture2D.Reinitialize.

API Updater harus mengubah nama ini secara otomatis. Jika tidak, ubah penggunaan Texture2D.Resize ke Texture2D.Reinitialize.

Perubahan Android

Bagian besar dari pipa build Android sekarang inkremental dan Unity menghapus fitur-fitur berikut yang berada di pipa build sebelumnya:

  • Unity tidak lagi menyalin aset proyek GradleSistem build Android yang mengotomatiskan beberapa proses build. Otomasi ini berarti bahwa banyak kesalahan build umum cenderung terjadi. More info
    Lihat di Glossary
    yang terletak di Assets /Plugins /Android ke proyek Gradle. [res, assets] to the Gradle project.
    • Sebelumnya Anda dapat menempatkan sumber daya Gradle di folder ini dan Unity disalin mereka ke proyek Gradle. Anda sekarang harus menggunakan AAR atau Androidlib plug-ins untuk lulus sumber daya Gradle tambahan ke aplikasi.
    • Jika Anda menempatkan aset proyek di folder ini, Unity menunjukkan pesan kesalahan build.
  • Unity tidak lagi mengabaikan file dalam komentar GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN.
    • Sebelumnya Unity tidak akan menulis file jika Anda menghapus komentar ini. Jika Anda tidak menghapus komentar, Unity selalu regenerasi build.gradle, manifest, dan file UnityPlayerActivity.
    • Jika Anda ingin perubahan Anda untuk bertahan menggunakan pipa build baru, gunakan template.
  • Ketika Anda mengekspor proyek Android, Unity tidak lagi membuat paket zip simbol. Simbol sekarang tersedia di direktori unityLibrary\symbols yang dapat Anda zip. Alasan perubahan ini adalah bahwa tidak semua file simbol tersedia ketika Anda mengekspor sebuah proyek; Gradle menghasilkan simbol libil2cpp.so ketika membangun aplikasi.
  • Mengubah bagaimana pemeriksaan Unity untuk melihat apakah obb kompatibel dengan apkFormat paket Android output oleh Unity. Sebuah APK secara otomatis digunakan untuk perangkat Anda ketika Anda memilih File > Build & Run. More info
    Lihat di Glossary
    . Kedua apk dan obb sekarang memiliki file unity_obb_guid di dalamnya dan jika konten yang cocok antara mereka, Unity memperlakukan mereka sebagai kompatibel.
  • Untuk membangun kustom 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
    yang menggunakan PatchPackage, perhatikan bahwa Patch/Patch & Run sekarang bekerja dengan semua jenis aset dan tidak memerlukan Build Script Only.

UI Toolkit - Default scaleMode untuk Gambar berubah

Gambar default.scaleMode diubah dari ScaleAndCrop ke ScaleToFit.

Perilaku yang diharapkan untuk gambar adalah untuk mengukur ukuran elemen, sehingga kami mengubah nilai default dari Image.scaleMode ke ScaleToFit. Jika Anda tidak menimpa mode skala gambar, beberapa gambar yang dirajut mungkin mengecilkan ukuran elemen. Jika ScaleAndCrop adalah mode yang diharapkan untuk gambar Anda, Anda dapat menimpa gaya mereka dengan menambahkan nilai berikut dalam gaya inline file UXML Anda:

-unity-background-scale-mode: scale-and-crop;

Anda juga dapat membuat kelas gaya dengan override dan menerapkannya ke gambar yang membutuhkan ScaleAndCrop.

Perubahan perilaku peningkatan mono

The underlying C# runtime, Mono, telah ditingkatkan dalam versi terbaru. Ini termasuk banyak perbaikan dari versi hulu Mono, dan beberapa perubahan yang tidak masuk akal dalam perilaku.

  • Directory.GetFiles tidak lagi dijamin untuk mengembalikan daftar yang diurutkan.
    • Sebelumnya, ini selalu mengembalikan daftar item yang diurutkan secara alfabet. Jika proyek Anda membutuhkan item untuk dikembalikan dalam urutan yang sama setiap kali, memilah daftar yang dikembalikan. Contoh: var file = Directory.GetFiles(dir).OrderBy(f => f);
  • Object.GetHashCode sekarang kembali nilai yang berbeda dan tidak boleh diandalkan sebagai algoritma hashing deterministik antara sistem operasi.
    • Secara umum, Anda tidak boleh menggunakan hasil GetHashCode di luar proses saat ini, itu tidak men serialisasinya atau mengharapkannya sama dengan waktu berikutnya kode berjalan dalam proses baru. Unity merekomendasikan menggunakan algoritma hashing deterministik seperti MD5.
  • Beberapa perbaikan bug telah menghasilkan pengecualian baru yang dibuang. Selain itu, konten beberapa pesan pengecualian telah berubah.
    • Perilaku baru ini akan sangat terlihat dalam skenario pengujian otomatis dan mungkin memerlukan perubahan perilaku yang diharapkan jika tes parsing log untuk pesan pengecualian tertentu.

Kinerja Adaptif

Versi 3.0 dari paket Performa Adaptif sekarang tersedia. Untuk informasi tentang cara meningkatkan versi 3.0, lihat .

RenderTexture KedalamanStensilFormat

Sebelumnya, jika Anda mengatur properti ke 32-bit, Anda bisa mendapatkan D24_S8 tergantung pada platform. Sekarang jika Anda mengaturnya ke 32-bit, Anda mendapatkan D32_S8 dengan 32-bit untuk komponen kedalaman jika format itu didukung pada platform saat ini. Namun, ini menggandakan penggunaan memori untuk depth bufferSebuah toko memori yang memegang kedalaman nilai z setiap pixel dalam gambar, di mana nilai z adalah kedalaman untuk setiap piksel yang diberikan dari pesawat proyeksi. More info
Lihat di Glossary
.

Properti baru mengembalikan format yang digunakan API grafis untuk membuat sumber daya dalam memori video. Anda juga dapat menggunakan properti ini untuk meminta format tertentu. Namun, tidak semua platform mendukung semua format stensil kedalaman. Ketika Anda mengatur properti DepthStencilFormat untuk format yang tidak didukung, Unity secara otomatis memilih format yang kompatibel yang memiliki jumlah bit yang sama atau lebih besar untuk komponen kedalaman dan stensil.

Upgrading

Aset RenderTexture sekarang serialisasi format stensil kedalaman yang Anda pilih. Jika Anda menggunakan API yang mengambil sejumlah bit bukan format, bit ini dipetakan ke format dan format itu serialisasi. Aset RenderTexture dari versi sebelumnya yang memiliki kedalaman yang ditetapkan ke lebih dari 16-bit secara otomatis ditingkatkan untuk menggunakan D24_S8.

Pada beberapa platform (misalnya Windows) yang menggunakan API grafis DirectX, hasil ini dalam format dengan sedikit kedalaman yang lebih sedikit karena backend grafis memilih format D32_S8 internal jika Anda mengatur bit> 16. Untuk memastikan peningkatan konsisten di semua platform, D24_S8 digunakan pada semua platform untuk pengupgrade otomatis. Namun, ini mungkin memperkenalkan artefak visual dalam output render proyek Anda jika Anda memiliki aset RenderTexture dalam proyek Anda. Tinjau aset ini dan mengubah format stensil kedalaman ke D32_S8 bila diperlukan. Masalah berikut mungkin terjadi:

  • Ukuran memori mungkin meningkat untuk RenderTextures yang Anda gunakan. Namun, memori yang dilaporkan sekarang benar.
  • Sekarang yang mengatur properti kedalaman ke 32-bit memberi Anda komponen kedalaman 32-bit, penggunaan memori meningkat. Untuk menghindari ini, atur bit ke 24 dan gunakan D24_S8 jika didukung di platform Anda.
  • Jika platform tidak mendukung D24_S8, Unity jatuh kembali ke format kompatibel D32_S8 secara default. Untuk mencegah ini, di jendela 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
    , menonaktifkan properti Format yang kompatibel pada aset. Jika Unity tidak mendukung format D32_S8 dan tidak dapat jatuh kembali, Anda melihat pesan kesalahan “RenderTexture. Membuat gagal: format kedalaman / stensil tidak didukung. Tidak ada format yang kompatibel pada platform ini atau fallback ini ke format yang kompatibel dinonaktifkan dalam inspektur impor. Dalam kebanyakan kasus, untuk memperbaiki masalah yang dapat Anda ubah pada Enable Compatible Format.

Format grafis DepthAuto, ShadowAuto dan Video Mobil

Format grafis berikut sekarang telah diuraikan:

  • DepthAuto
  • ShadowAuto
  • VideoAuto

Format "Auto" ini tidak jelas tentang format yang tepat yang digunakan dan mungkin bervariasi oleh platform.

Langkah-langkah untuk menghapus penggunaan format yang ditentukan ini tergantung pada format dan penggunaan kasus.

Untuk VideoAuto

Untuk mendapatkan format video otomatis platform saat ini, gunakan SystemInfo.GetGraphicsFormat(DefaultFormat.Video).

Untuk KedalamanAuto /Shadow Auto digunakan untuk menunjukkan tekstur render secara mendalam.

GrafikFormat API sering menggunakan DepthAuto atau ShadowAuto untuk membuat render texturesJenis Tekstur khusus yang diciptakan dan diperbarui pada runtime. Untuk menggunakannya, pertama membuat Tekstur Render baru dan menunjuk salah satu Kamera Anda untuk membuatnya. Kemudian Anda dapat menggunakan Tekstur Render dalam Bahan seperti Tekstur biasa. More info
Lihat di Glossary
dengan rendering secara mendalam, dan tidak ada buffer warna. Contoh kasus penggunaan ini adalah:

  • renderTextureDescriptor.graphicsFormat = GraphicsFormat.ShadowAuto
  • RenderTexture.GetTemporary(width, height, bits, GraphicsFormat.ShadowAuto)

Untuk menunjukkan rendering dalam warna (non-warna), gunakan GraphicsFormat. Tidak seperti format warna baru. renderTextureDescriptor.graphicsFormat = GraphicsFormat.None;

Jika Anda menggunakan ShadowAuto, atur bayanganSamplingMode RenderTextureDescriptor Anda ke ShadowSamplingMode.CompareDepths untuk mengaktifkan sampling mendalam pada tekstur kedalaman, dan mengubah kode untuk menggunakan overload yang mengambil RenderTextureDescriptor. renderTextureDescriptor.shadowSamplingMode = ShadowSamplingMode.CompareDepths;

Untuk KedalamanAuto /Shadow Auto dalam situasi lain

Dalam beberapa situasi format DepthAuto/ShadowAuto mewakili format kedalaman yang dipilih secara otomatis sesuai untuk platform saat ini. Untuk mengganti nilai yang telah ditentukan dalam kasus ini, gunakan SystemInfo.GetGraphicsFormat(DefaultFormat.Depth/Shadow)

WebGL: Diperbarui Emscripten ke 2.0.19

Target asm.js Linker yang tersedia untuk pengguna tingkat lanjut tidak lagi tersedia.

  • Pada Unity 2021.2, kompilasi Emscripten yang mendasari digunakan oleh platform WebGLLogin API yang membuat grafis 2D dan 3D di browser web. Opsi build Unity WebGL memungkinkan Unity untuk mempublikasikan konten sebagai program JavaScript yang menggunakan teknologi HTML5 dan WebGL rendering API untuk menjalankan konten Unity di browser web. More info
    Lihat di Glossary
    diperbarui ke versi 2.0.19. Ini meningkatkan format file objek kode asli, dan oleh karena itu membutuhkan mengompilkan semua plugin kode asli (plugin kode C / C++) dalam proyek. Jika Anda menggunakan plugin pihak ketiga dari Unity Asset StoreSebuah perpustakaan yang berkembang dari aset gratis dan komersial yang diciptakan oleh Unity dan anggota komunitas. Menawarkan berbagai aset, dari tekstur, model dan animasi ke seluruh contoh proyek, tutorial dan ekstensi Editor. More info
    Lihat di Glossary
    , misalnya, ingatlah untuk meminta penulis untuk versi terbaru untuk Unity 2021.2.
  • Fungsi JavaScript runtime emscripten Pointer_stringify()is sekarang didepresikan. Sebagai gantinya, sebutkan fungsi UTF8ToString() untuk mengasah string C yang dikodekan UTF8 dari WebAssembly heap ke string JavaScript.

Progres GPU Dukungan dropped Lightmapper untuk perangkat OpenCL CPU

Progresif GPU Lightmapper tidak lagi mendukung perangkat OpenCL CPU. Jika tidak ada perangkat GPU yang didukung ditemukan tetapi perangkat OpenCL CPU terdeteksi, pesan peringatan memberi tahu Anda bahwa perangkat digesek dan jatuh kembali ke Progressive CPU Lightmapper. Progresif CPU Lightmapper menawarkan kinerja yang lebih baik untuk perhitungan berbasis CPU 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
. Perubahan perilaku ini akan terjadi secara otomatis dan peta lampu harus sebanding seperti yang diharapkan.

Ketika metode Unity panggilan InitializeOnLoad selama proses impor aset, pemuatan aset dapat gagal. Selama impor aset, database aset dalam state update dan Unity tidak dapat menentukan aset mana yang telah diimpor. Metode InitializeOnLoad tidak dapat memuat aset yang belum diimpor.

Untuk meningkatkan proses impor aset, callback OnPostprocessAllAssets telah ditingkatkan. Secara khusus, callback OnPostprocessAllAssets:

  • Dapat melakukan initialisasi setelah reload domain, ketika database aset dijamin dalam keadaan siap.
  • Mengandung parameter didDomainReload, yang ditetapkan untuk benar jika domain telah diisi ulang.
  • Mendukung operasi aset. Ini termasuk pemuatan aset, yang berperilaku dengan cara yang sama dengan memuat aset melalui item menu.
  • Telah pindah dari loop impor database aset. Pengolahan callback ditunda sampai impor aset selesai.

Pindahkan logika penginisialisasi domain yang memerlukan operasi aset ke callback OnPostprocessAllAsset; jangan melakukan operasi aset dalam metode InitializeOnLoad.

Contoh kode perubahan perilaku berikut menunjukkan bagaimana operasi aset sebelumnya ditunda.

Contoh 1:

public class AssetPostprocessorTester1 : AssetPostprocessor
{
    static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths)
    {
        var assetPath = "Assets/hello.txt";

        if (File.Exists(assetPath))
        {
            var txtObj = AssetDatabase.LoadAssetAtPath<TextAsset>("Assets/hello.txt");
            AssetDatabase.DeleteAsset("Assets/hello.txt");

            if (txtObj == null)
                Debug.Log("New Behaviour: Asset object is unloaded");
            else
                Debug.Log("Old Behaviour: Asset is loaded for deleted asset!!");
        }
    }
}

Contoh 2:

 public class AssetPostprocessorTester2 : AssetPostprocessor
{
    static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths)
    {
        var assetPath = "Assets/SomeText.txt";
        if (!File.Exists(assetPath))
        {
            File.WriteAllText(assetPath, "hello world");

            AssetDatabase.ImportAsset(assetPath);
            var txtObj = AssetDatabase.LoadAssetAtPath<TextAsset>(assetPath);

            if (txtObj == null)
                Debug.Log("Old Behaviour: Asset hasn't been imported yet");
            else
                Debug.Log("New Behaviour: Asset is imported and loaded");
        }
    }
}

Contoh berikut memiliki varian OnPostprocessAllAssets baru dengan parameter didDomainReload:

static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths, bool didDomainReload)
{
    if (didDomainReload)
        Debug.Log("Domain has been reloaded");
    else
        Debug.Log("Domain did not reload during import");
}

Semua reload domain sekarang diproses dalam database aset.

OnPostprocessAllAssets sekarang bekerja lebih baik dengan operasi aset, tetapi setiap pemrosesan dalam callback ini meningkatkan database aset menyegarkan dan waktu reload domain. Metode InitializeOnLoad juga menambah waktu reload domain. Ini adalah praktik terbaik untuk meminimalkan pemrosesan dalam panggilan ini untuk meningkatkan responsifitas Editor antara iterasi.

Peningkatan sistem kata kunci Shader

Sistem kata kunci shaderProgram yang berjalan di GPU. More info
Lihat di Glossary
sekarang memungkinkan hingga 65534 kata kunci lokal per naungan atau kolon dan 232-2 kata kunci global per proyek. Semua kata kunci yang Anda deklarasikan dalam naungan atau kolon sekarang lokal ke naungan ini. Kata kunci yang Anda deklarasikan secara langsung dengan suffix lokal tidak dipengaruhi oleh negara kata kunci global.

Contoh:

A lulus dalam naungan menyatakan kata kunci berikut:

  • #pragma shader_feature FOO BAR
  • #pragma shader_feature_local BOO BAZ

Ketika menggunakan kata kunci FOO dan BAR ini diaktifkan jika mereka diaktifkan baik secara global atau pada materi. Kata kunci BOO dan BAZ hanya diaktifkan jika mereka diaktifkan pada materi.

Unity mendukung .NET Standard 2.1 API

Unity sekarang mendukung banyak API tambahan di . Perpustakaan kelas dasar NET, termasuk semua API di . NET Standard 2.1 API. Proyek Anda mungkin gagal untuk mengkompilasi jika kode Anda memiliki konflik dengan API baru.

Untuk menghindari kesalahan ketika Anda meng-upgrade proyek yang dibuat dalam versi Unity sebelumnya, periksa dan memperbarui kode Anda untuk memastikan bahwa tidak ada konflik dengan jenis dan metode yang sekarang tersedia di . Standar NET 2.1.

Sumber konflik termasuk berikut:

  • ambiguous references
  • metode ekstensi
  • precompiled assemblies

Resolve referensi ambiguous

Jika kode Anda menerapkan jenis atau metode dengan nama yang bertentangan dengan jenis atau metode yang. NET Standard 2.1 menambahkan, kode Anda gagal untuk dikompilasi. Nama konflik dapat menyebabkan kesalahan kompiler C# karena referensi yang ambigu.

Misalnya, jika Anda menambahkan jenis bernama MyCompany.MyCode.Range ke kode proyek Anda, ini mungkin bertentangan dengan jenis System.Range yang ada. Kode yang mengandung pernyataan using System; dan using MyCompany; gagal dikompilasi.

Untuk mencegah kesalahan, sepenuhnya menentukan namespace dalam kode C# untuk segala jenis yang memiliki nama konflik.

Metode perpanjangan konflik penyelesaian

Jika kode yang ada memiliki metode ekstensi yang. Standar NET 2.1 sekarang mengimplementasikan pada jenis secara langsung, Anda dapat memilih untuk mengubah nama metode ekstensi Anda atau untuk menggunakan metode yang diterapkan oleh perpustakaan kelas dasar.

Sebagai contoh, kode dalam proyek Anda mungkin menerapkan metode ekstensi bernama CopyTo pada tipe ArraySegment. Dalam Standar .NET 2.1, ArraySegment memiliki metode built-in CopyTo. Anda dapat memilih untuk mengubah nama metode ekstensi CopyTo Anda, atau menghilangkannya sepenuhnya dan menggunakan yang built-in.

Perakitan konflik penyelesaian

Jika proyek Anda menggunakan rakitan prekompiled (yaitu, plugin yang dikelola) yang menerapkan jenis dan metode yang sekarang bagian dari perpustakaan kelas dasar, kemudian menghapus rakitan ini dari proyek Anda dan menggunakan implementasi bawaan.

Misalnya, dalam versi Unity sebelumnya, Anda perlu menggunakan perakitan System.Memory.dll dari NuGet untuk mengakses tipe nilai System.Span. Sekarang, .NET Standard 2.1 menyediakan System.Span di perpustakaan kelas dasar. Jika Anda mencoba menggunakan plugin yang dikelola di Unity 2021.2, proyek gagal untuk membangun.System.Memory.dll managed plugin in Unity 2021.2, the project fails to build.

Windows XP (32/64 bit)

Microsoft telah menentukan plugin Windows XR dan sekarang mendukung fitur dan perangkat Windows Mixed Reality (WMR) melalui plugin OpenXR.

  • Plugin Windows XR telah dihapus sebagai Unity 2021.2.
  • Ketika Anda membuka proyek yang ada di Unity 2021.2, proses pembaruan menghapus plugin Windows XR, jika ada.
  • Untuk terus menggunakan proyek untuk Windows Mixed Reality, Anda harus mengaktifkan plugin Unity OpenXR.
  • Tergantung pada fitur yang Anda gunakan, Anda juga harus menginstal plugin dukungan Microsoft Mixed Reality OpenXR dan mungkin alat tambahan dari Microsoft Mixed Reality Toolkit.

Untuk meningkatkan ke plugin Unity OpenXR:

  1. Buka jendela Project SettingsA broad collection of settings which allow you to configure how Physics, Audio, Networking, Graphics, Input and many other areas of your project behave. More info
    See in Glossary
    .
  2. Pada bagian XR Plug-inA set of code created outside of Unity that creates functionality in Unity. There are two kinds of plug-ins you can use in Unity: Managed plug-ins (managed .NET assemblies created with tools like Visual Studio) and Native plug-ins (platform-specific native code libraries). More info
    See in Glossary
    Management
    , aktifkan OpenXR dalam daftar Plug-in Providers. Jika diperlukan, unduhan Unity dan instal plugin OpenXR.

Setelah plugin OpenXR diaktifkan, Anda dapat menggunakan Mixed Reality Feature Tool yang disediakan oleh Microsoft untuk menginstal paket pendukung yang diperlukan.

Untuk menginstal atau memperbarui fitur WMR, alat, dan sampel:

  1. Unduh dan jalankan Alat Fitur Realita Campuran.
  2. Pilih Proyek Unity untuk memperbarui dan klik Temukan Fitur.
  3. Di bawah Dukungan Platform, pilih Mixed Reality OpenXR Plugin.
  4. Pilih fitur tambahan yang ingin Anda tambahkan.
  5. Klik Dapatkan fitur.
  6. Klik Impor dan kemudian Banding untuk menyelesaikan proses.
  7. Kembali ke bagian Manajemen Plug-in XR dari Pengaturan Proyek Unity Anda dan memungkinkan dan mengkonfigurasi fitur tambahan.

Untuk informasi lebih lanjut tentang mengatur proyek Unity baru dan diperbarui untuk menggunakan Windows Mixed Reality, lihat Menyiapkan konfigurasi XR Anda di situs dokumentasi Microsoft.

API Updater
Peningkatan ke Unity 2021.1