folder khusus dan urutan kompilasi skrip
Simbol scripting kustom

Kompilasi Kondisional

Dukungan unity untuk bahasa C# termasuk penggunaan directives, yang memungkinkan Anda untuk secara selektif termasuk atau mengecualikan kode dari kompilasi, berdasarkan apakah scripting symbols tertentu adalah defined atau tidak ditentukan.

Anda dapat membaca lebih luas tentang bagaimana petunjuk ini bekerja di C# pada Login C# praprosesor halaman arahan.

Unity memiliki berbagai simbol skrip built-in yang mewakili opsi yang dapat Anda gunakan di 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
Anda untuk selektif termasuk atau mengecualikan bagian kode dari kompilasi.

Misalnya, simbol scripting bawaan yang ditetapkan ketika pemain dibangun untuk platform standalone Windows adalah UNITY_STANDALONE_WIN. Anda dapat memeriksa apakah simbol ini didefinisikan menggunakan jenis khusus jika pernyataan, sebagai berikut:

#if UNITY_STANDALONE_WIN

  Debug.Log("Standalone Windows");

#endif

Karakter hash (#) di depan if dan endif menunjukkan bahwa pernyataan ini adalah "arah", dan ditangani selama proses kompilasi, daripada saat runtime.

Oleh karena itu dalam contoh di atas, garis Debug hanya disertakan untuk kompilasi dalam membangun proyek Windows yang berdiri sendiri. Ini dihilangkan sepenuhnya ketika disusun di Editor, atau dalam pembangun target lainnya. Ini berbeda untuk menggunakan struktur if .. then .. else biasa, yang hanya akan memotong execution bagian tertentu dari kode pada waktu yang berjalan. Lihat lebih lanjut di bawah ini untuk contoh penuh.

Ada sejumlah simbol scripting bawaan yang memungkinkan Anda untuk secara selektif mengkompilasi atau kode omit berdasarkan Platform yang dipilih, Versi Editor, dan skenario lingkungan sistem miscellan other. Simbol scripting bawaan ini tercantum di bawah ini.

Selain itu, Anda dapat mendefinisikan simbol scripting Anda sendiri baik menggunakan Editor UI(User Interface) Memungkinkan pengguna untuk berinteraksi dengan aplikasi Anda. Unity saat ini mendukung tiga sistem UI. More info
Lihat di Glossary
, melalui scripting, atau melalui file aset, yang memungkinkan Anda untuk mengontrol kompilasi sebagian dari kode Anda berdasarkan definisi arbitrase. Lihat Simbol scripting kustom untuk informasi lebih lanjut.

Catatan: Scripting symbols kadang-kadang disebut sebagai “define simbol”, “preprocessor mendefinisikan”, atau hanya “defines”.

WordPress.org

Unity secara otomatis mendefinisikan simbol scripting tertentu berdasarkan platform penulisan dan membangun target. Ini adalah sebagai berikut:

Define Function
UNITY_EDITOR Simbol Scripting untuk memanggil Skrip Editor Unity dari kode permainan Anda.
UNITY_EDITOR_WIN Simbol Scripting untuk kode Editor di Windows.
UNITY_EDITOR_OSX Simbol Scripting untuk kode Editor pada Mac OS X.
UNITY_EDITOR_LINUX Simbol Scripting untuk kode Editor di Linux.
UNITY_STANDALONE_OSX Simbol scripting untuk mengkompilasi atau mengeksekusi kode khusus untuk Mac OS X (termasuk arsitektur Universal, PPC dan Intel).
UNITY_STANDALONE_WIN Simbol scripting untuk membandingkan / mengeksekusi kode khusus untuk aplikasi Windows standalone.
UNITY_STANDALONE_LINUX Simbol scripting untuk membandingkan / mengeksekusi kode khusus untuk aplikasi mandiri Linux.
UNITY_STANDALONE Simbol Scripting untuk membandingkan / mengeksekusi kode untuk platform yang berdiri sendiri (Mac OS X, Windows atau Linux).
UNITY_WII Simbol scripting untuk membandingkan / mengeksekusi kode untuk konsol Wii.
UNITY_IOS Simbol scripting untuk membandingkan / mengeksekusi kode untuk platform iOS.
UNITY_IPHONE Sitemap Gunakan UNITY_IOS bukan.
UNITY_ANDROID Simbol Scripting untuk platform Android.
UNITY_LUMIN Simbol Scripting untuk platform Magic Leap OS. Anda juga dapat menggunakan PLATFORM_LUMIN.
UNITY_TIZEN Simbol Scripting untuk platform Tizen.
UNITY_TVOS Simbol Scripting untuk platform Apple TV.
UNITY_WSA Simbol Scripting untuk Universal Windows PlatformFitur IAP yang mendukung simulator Pembelian Aplikasi Microsoft, yang memungkinkan Anda untuk menguji aliran pembelian IAP pada perangkat sebelum menerbitkan aplikasi Anda. More info
Lihat di Glossary
. Selain itu, NETFX_CORE didefinisikan ketika membandingkan file C# terhadap . NET Core dan menggunakan . Sitemapscripting 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
.
UNITY_WSA_10_0 Simbol Scripting untuk Platform Windows Universal. Selain itu WINDOWS_UWP didefinisikan ketika membandingkan file C# terhadap .NET Core.
UNITY_WEBGL Simbol Scripting untuk 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
.
UNITY_FACEBOOK Simbol Scripting untuk platform Facebook (WebGL atau Windows mandiri).
UNITY_ANALYTICS Simbol scripting untuk memanggil metode Unity AnalyticsUnity Analytics
Lihat di Glossary
dari kode permainan Anda. Versi 5.2 dan di atas.
UNITY_ASSERTIONS Simbol Scripting untuk proses kontrol pernyataan.
UNITY_64 Simbol Scripting untuk platform 64-bit.

Versi editor Simbol Scripting

Unity secara otomatis mendefinisikan simbol scripting tertentu berdasarkan versi Editor yang saat ini Anda gunakan.

Mengingat nomor versi X.Y.Z (misalnya, 2019.4.14), Unity mengekspos tiga simbol skrip global dalam format berikut: UNITY_X, UNITY_X_Y dan UNITY_X_Y_Z.

Berikut adalah contoh simbol scripting yang terkena Unity 2019.4.14:

Define Function
UNITY_2019 Simbol Scripting untuk versi rilis Unity 2019, yang terkena setiap 2019. Y.Z rilis.
UNITY_2019_4 Simbol scripting untuk versi utama Unity 2019.4, terpapar di setiap rilis 2019.4.Z.
UNITY_2019_4_14 Simbol Scripting untuk versi minor Unity 2019.4.14.

Anda juga dapat menyusun kode secara selektif berdasarkan versi awal Unity yang diperlukan untuk mengkompilasi atau mengeksekusi sebagian kode yang diberikan. Mengingat format versi yang sama seperti di atas (X.Y), Unity mengekspos satu #define global dalam format UNITY_X_Y_OR_NEWER, yang dapat Anda gunakan untuk tujuan ini.

Simbol scripting lainnya

Simbol skriping lain menentukan Unity adalah:

Define Function
CSHARP_7_3_OR_NEWER Tentukan ketika membangun skrip dengan dukungan untuk C# 7.3 atau yang lebih baru.
ENABLE_MONO Scripting backend #define untuk Mono.
ENABLE_IL2CPP Scripting backend #define untuk IL2CPPBack-end scripting bersatu yang dapat Anda gunakan sebagai alternatif untuk Mono ketika proyek bangunan untuk beberapa platform. More info
Lihat di Glossary
.
NET_2_0 Ditetapkan ketika membangun skrip terhadap tingkat kompatibilitas API NET 2.0 pada Mono dan IL2CPP.
NET_2_0_SUBSET Ditetapkan ketika membangun skrip terhadap tingkat kompatibilitas API Subset NET 2.0 pada Mono dan IL2CPP.
NET_LEGACY Ditetapkan ketika membangun skrip terhadap .NET 2.0 atau .NET 2.0 Subset API tingkat kompatibilitas pada Mono dan IL2CPP.
NET_4_6 Ditetapkan ketika membangun skrip terhadap tingkat kompatibilitas API NET 4.x pada Mono dan IL2CPP.
NET_STANDARD_2_0 Didefinisikan ketika membangun skrip terhadap tingkat kompatibilitas API NET Standard 2.0 pada Mono dan IL2CPP.
ENABLE_WINMD_SUPPORT Setelah dukungan Windows Runtime diaktifkan pada IL2CPP. Lihat Dukungan Windows Runtime untuk rincian lebih lanjut.
ENABLE_INPUT_SYSTEM Setelah paket Sistem Input diaktifkan dalam Player SettingsPengaturan yang memungkinkan Anda mengatur berbagai pilihan khusus pemain untuk permainan akhir yang dibangun oleh Unity. More info
Lihat di Glossary
.
ENABLE_LEGACY_INPUT_MANAGER Ditetapkan ketika legacy Input ManagerPengaturan di mana Anda dapat mendefinisikan semua sumbu input yang berbeda, tombol dan kontrol untuk proyek Anda. More info
Lihat di Glossary
diaktifkan dalam Pengaturan Pemain.
UNITY_SERVER Didefinisikan ketika pengaturan Build Server diaktifkan dalam Pengaturan Build
DEVELOPMENT_BUILD Didefinisikan ketika skrip Anda berjalan di pemain yang dibangun dengan opsi "Development BuildMembangun pengembangan termasuk simbol debug dan memungkinkan Profiler. More info
Lihat di Glossary
".

Pengujian kode precompiled

Di bawah ini adalah contoh cara menggunakan kode yang telah ditentukan. Ini mencetak pesan yang tergantung pada platform yang Anda pilih untuk membangun target Anda.

Pertama-tama, pilih platform yang ingin Anda uji kode Anda dengan pergi ke File > Build Settings. Ini menampilkan jendela Build Settings; pilih platform target Anda dari sini.

Build Settings window with Windows, Mac, Linux selected as the target platform
Membangun jendela Pengaturan dengan Windows, Mac, Linux dipilih sebagai platform target

Pilih platform yang ingin Anda uji kode prekompiled Anda terhadap dan klik Switch Platform untuk memberitahu Unity yang platform yang Anda targetkan.

Buat script dan copy/paste kode berikut:

using UnityEngine;
using System.Collections;

public class PlatformDefines : MonoBehaviour {
  void Start () {

    #if UNITY_EDITOR
      Debug.Log("Unity Editor");
    #endif

    #if UNITY_IOS
      Debug.Log("iOS");
    #endif

    #if UNITY_STANDALONE_OSX
        Debug.Log("Standalone OSX");
    #endif

    #if UNITY_STANDALONE_WIN
      Debug.Log("Standalone Windows");
    #endif

  }          
}

Untuk menguji kode, klik Play Mode. Konfirmasikan bahwa kode bekerja dengan memeriksa pesan yang relevan di konsol Unity, tergantung pada platform mana yang Anda pilih - misalnya, jika Anda memilih iOS, pesan "Unity iOS" diatur untuk muncul di konsol.

Dalam C # Anda dapat menggunakan atribut CONDITIONAL yang lebih bersih, kurang kesalahan-memproduksi cara pengupasan fungsi. Lihat Sitemap Kelas Attribute untuk informasi lebih lanjut. Perhatikan bahwa callback Unity umum (ex. Start(), Update(), LateUpdate(), FixedUpdate(), Awake()) tidak terpengaruh oleh atribut ini karena mereka disebut langsung dari mesin dan, karena alasan kinerja, tidak memperhitungkan mereka ke akun.

Selain kompiler #if dasar, Anda juga dapat menggunakan uji multiway di C#:

#if UNITY_EDITOR

    Debug.Log("Unity Editor");

#elif UNITY_IOS

    Debug.Log("Unity iOS");

#else

    Debug.Log("Any other platform");

#endif
folder khusus dan urutan kompilasi skrip
Simbol scripting kustom