Platform Windows Universal: Proyek Generasi dengan backend IL2CPP
Platform Windows Universal: Debugging pada Scripting IL2CPP

Platform Windows Universal: Plugin pada Scripting IL2CPP

Model plugin 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
mirip dengan platform Unity lainnya (seperti Windows standalone).

WordPress.org

Secara default, target 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 API compatiblity level. Itu berarti tidak mendukung plugin yang dikelola menargetkan. NET 4.5 atau mengkonsumsi API Windows Runtime. Semua plugin yang dikelola harus ditargetkan. NET 4.5 atau API setara saat menggunakan level compatiblity ini. Anda dapat beralih ke . NET 4.6 API compatibilty level dalam pengaturan Player jika Anda ingin mengangkat pembatasan ini.

IL2CPP 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
mengekspos sama persis. Permukaan API NET sebagai editor Unity atau pemain mandiri, sehingga dimungkinkan untuk menggunakan plugin yang sama tanpa perlu untuk menyusun versi terpisah yang menargetkan berbeda. API NET untuk Platform Windows Universal.

WordPress.org

Dukungan backend scripting IL2CPP menggunakan plugin asli melalui mekanisme P / Invoke. Ini berarti bahwa Anda dapat memanggil plugin asli langsung dari kode C # Anda dengan menentukan prototipe fungsi asli dan kemudian memanggilnya. Contoh:

[DllImport("MyPlugin.dll")]
private static extern int CountLettersInString([MarshalAs(UnmanagedType.LPWSTR)]string str);

private void Start()
{
    Debug.Log(CountLettersInString("Hello, native plugin!"));
}

Implementasi fungsi tersebut di dalam MyPlugin.dll akan terlihat seperti ini:

extern "C" __declspec(dllexport)
int __stdcall CountLettersInString(wchar_t* str)
{
    int length = 0;
    while (*str++ != nullptr)
        length++;
    return length;
}

P/Invoke marshaling aturan pertandingan yang pejabat. marshaling NET, dengan pengecualian beberapa jenis yang tidak didukung:

  • AnsiBStr
  • Currency
  • SAFEARRAY
  • IDispatch
  • TBStr
  • VBByRefStr

Konvensi panggilan default untuk fungsi P / Invoke pada x86 adalah __stdcall.

Plugin asli dapat diucapkan dalam dua cara: kode sumber DLL atau C++.

WordPress.org

P / Menjelajahi plugin asli yang telah disiapkan bekerja dengan memuat DLL pada runtime, menemukan titik entri fungsi dan kemudian memanggilnya. DLLs ini harus disusun terhadap SDK Windows yang sesuai untuk arsitektur CPU target. DLLs juga harus dikonfigurasi dalam Plugin 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
ketika ditambahkan ke proyek Unity.

C++ kode sumber plugin asli

Mungkin untuk menambahkan file kode C++ (.cpp) langsung ke proyek Unity, yang akan bertindak sebagai plugin di Plugin Inspector. Jika dikonfigurasi kompatibel dengan Platform Windows Universal dan backend IL2CPP, file C++ ini akan disusun bersama dengan kode C++ yang dihasilkan dari rakitan yang dikelola:

Karena fungsi terkait dengan kode C++ yang dihasilkan, tidak ada DLL yang terpisah ke P/Invoke. Karena ini, dimungkinkan untuk menggunakan kata kunci "__ internal" di tempat nama DLL, yang akan membuatnya C++ Tanggung jawab untuk menyelesaikan fungsi, daripada memuatnya di runtime:

[DllImport("__Internal")]
private static extern int CountLettersInString([MarshalAs(UnmanagedType.LPWSTR)]string str);

Karena panggilan diselesaikan oleh penghubung, membuat kesalahan dalam deklarasi fungsi di sisi yang dikelola akan menghasilkan kesalahan penghubung, bukan kesalahan pada runtime. Ini juga berarti bahwa tidak ada kebutuhan pemuatan dinamis untuk terjadi pada runtime, dan fungsi disebut secara langsung. Ini secara signifikan mengurangi overhead panggilan P/Invoke.

Batasan P / Invoke

Di Universal Windows Platform Anda tidak dapat membayangkan ke perpustakaan sistem tertentu dengan menentukan nama dll (seperti "kernelbase.dll") ketika menggunakan backend scripting IL2CPP. Meninggalkan P/Meningkatkan ke DLL yang ada di luar proyek akan mengakibatkan DllNotFoundException pada runtime.

Namun, itu masih mungkin untuk P/Invoke ke fungsi sistem ini dengan menentukan kata kunci "** internal" bukan nama DLL, yang menghasilkan tautan menyelesaikan fungsi dalam membangun waktu.

See also

Plugin Inspector


  • • 2018–08–03 Login
  • .NET 3.5 scripting runtime di 2018. Sitemap
Platform Windows Universal: Proyek Generasi dengan backend IL2CPP
Platform Windows Universal: Debugging pada Scripting IL2CPP