iOS
Memulai perkembangan iOS

Mengintegrasikan Unity ke aplikasi iOS asli

Halaman ini menjelaskan bagaimana untuk mengintegrasikan Perpustakaan Ketertiban Unity ke aplikasi asli iOS dengan Unity sebagai fitur Perpustakaan.

Anda dapat menggunakan fitur ini untuk menyertakan fitur berkekuatan Unity, seperti 3D / 2D Real-Time Rendering, AR Experience, interaksi model 3D, atau 2D mini-games, dalam aplikasi asli Anda. Perpustakaan Runtime Unity mengekspos kontrol untuk mengelola kapan dan bagaimana memuat, mengaktifkan, dan membongkar konten dalam aplikasi asli Anda.

How it works

Untuk menggunakan Unity sebagai Perpustakaan untuk iOS, pertama membangun proyek Xcode Anda seperti biasa dari Unity (untuk informasi lebih lanjut, lihat Membangun pengaturan untuk iOS).

Setiap Unity Login Proyek Xcode memiliki Struktur berikut:

  • Bagian perpustakaan dalam target UnityFramework yang mencakup sumber, plug-insSatu set kode yang dibuat di luar Unity yang menciptakan fungsi dalam Unity. Ada dua jenis plug-ins yang dapat Anda gunakan di Unity: Managed plug-ins (diproduksi. Rakitan NET dibuat dengan alat-alat seperti Studio Visual) dan plug-ins asli (pustaka kode asli yang spesifik platform). More info
    Lihat di Glossary
    , dan kerangka tergantung. Ini juga menghasilkan file UnityFramework.framework.
  • Bagian peluncur tipis dalam target Unity-iPhone yang mencakup data representasi aplikasi dan menjalankan perpustakaan. Target Unity-iPhone memiliki ketergantungan tunggal pada target UnityFramework.

Untuk mengintegrasikan Unity ke proyek Xcode lain, Anda perlu menggabungkan proyek Xcode (yang asli dan satu Unity menghasilkan) ke dalam ruang kerja Xcode tunggal, dan tambahkan file UnityFramework.framework ke bagian Embedded Binaries dari target Application untuk proyek Xcode asli. Setelah Anda melakukan ini, Anda dapat menggunakan kelas UnityFramework untuk mengontrol runtime Unity.

repository ini berisi proyek contoh dan plug-in yang menunjukkan cara mengintegrasikan Unity ke proyek Xcode, bersama dengan dokumentasi lebih lanjut.

UnityFramework kelas

Anda dapat mengontrol runtime Unity melalui contoh kelas UnityFramework Objective-C, yang merupakan kelas utama dari UnityFramework.framework:

Method Description
+ (UnityFramework*)getInstance; Metode kelas tunggal yang mengembalikan instance ke UnityFramework.
- (UnityAppController*)appController; Mengembalikan subclass UnityAppController. Ini adalah kelas Unity akar di sisi asli, dan dapat mengakses objek terkait tampilan aplikasi, seperti UIApplicationDelegate, UIView, UIViewControllers, atau CADisplayLink.DisplayConnection.
- (void)setDataBundleId:(const char*)bundleId; Mengatur Bundel di mana runtime Unity harus mencari folder Data. Untuk informasi lebih lanjut, lihat dokumentasi pada Data folder. Hubungi metode ini sebelum memanggil runUIApplicationMainWithArgc atau runEmbeddedWithArgc.
- (void)runUIApplicationMainWithArgc:(int)argc argv:(char*[])argv; Cara default untuk menjalankan Unity dari metode utama di mana tidak ada pandangan lain.
- (void)runEmbeddedWithArgc:(int)argc argv:(char*[])argv appLaunchOpts:(NSDictionary*)appLaunchOpts; Hubungi metode ini ketika Anda perlu menjalankan Unity ketika Pandangan lain ada.
- (void)unloadApplication; Hubungi ini untuk membongkar Unity dan menerima callback ke UnityFrameworkListener setelah pembongkaran selesai. Unity akan melepaskan sebagian besar memori itu menempati, tetapi tidak semua itu. Anda akan dapat menjalankan Unity lagi.
- (void)registerFrameworkListener:(id<UnityFrameworkListener>)obj; Daftarkan objek pendengar yang menerima penelepon acara terkait lifecycle UnityFramework.
- (void)unregisterFrameworkListener:(id<UnityFrameworkListener>)obj; Unregister objek pendengar.
- (void)showUnityWindow; Panggilan metode ini sementara tampilan non-Unity ditampilkan juga menunjukkan Tampilan Unity yang sudah berjalan.
- (void)pause:(bool)pause; Pause Unity.
- (void)setExecuteHeader:(const MachHeader*)header; Anda harus memanggil ini sebelum menjalankan Unity untuk CrashReporter untuk bekerja dengan benar.
- (void)sendMessageToGOWithName:(const char*)goName functionName:(const char*)name message:(const char*)msg; Metode ini adalah proxy untuk UnitySendMessage. Ini menemukan objek permainan dengan nama dan fungsi panggilanName dengan parameter pesan tali tunggal.
(void)quitApplication:(int)exitCode; Hubungi ini untuk membongkar Unity sepenuhnya dan menerima panggilan ke UnityFrameworkListener ketika Unity berhenti. Unity akan melepaskan semua memori.

Note: Anda tidak akan dapat menjalankan Unity lagi dalam proses yang sama setelah panggilan ini. Anda dapat mengatur quitHandler pada AppController untuk menimpa pembunuh proses default.

Limitations

Unity tidak mengontrol siklus hidup runtime, sehingga Unity sebagai Perpustakaan mungkin tidak bekerja untuk semua kasus penggunaan yang mungkin. Batasan yang diketahui termasuk:

  • Unity sebagai Perpustakaan hanya mendukung rendering layar penuh, dan tidak mendukung rendering pada bagian layar.
  • Anda tidak dapat memuat lebih dari satu kasus runtime Unity.
  • Anda mungkin perlu untuk menyesuaikan plug-in pihak ketiga (baik native dan managed) untuk bekerja dengan runtime Unity.

  • Unity sebagai Perpustakaan untuk iOS ditambahkan di .NewIn20193
iOS
Memulai perkembangan iOS