Dalam proses pembangunan iOS
pengaturan build iOS

Struktur Proyek Xcode Unity

Ketika Anda membangun Proyek Unity untuk platform iOS, Unity membuat folder yang berisi proyek Xcode. Anda perlu proyek ini untuk menyusun dan menandatangani aplikasi Anda sebelum Anda menyebarkannya di perangkat. Anda juga perlu menggunakannya untuk mempersiapkan dan menggabungkan permainan Anda untuk distribusi di App Store. Struktur proyek Xcode telah berubah sebagai Unity 2019.3 untuk mendukung integrasi Unity ke aplikasi iOS asli melalui Unity sebagai Perpustakaan.

Sebelum Anda membangun Proyek untuk iOS, pastikan Anda mengatur Bundle Identifier di iOS Player Settings** (menu: Edit > Pengaturan Proyek > Pengaturan Pemain). You can also choose whether your app targets the simulator or an actual device. To do this, change the SDK Login

Target Proyek

Setiap proyek Unity iOS Xcode yang dihasilkan memiliki struktur dan target berikut:

  • UnityFramework: Bagian perpustakaan dalam target UnityFramework. Ini termasuk folder Classes, UnityFramework, dan Libraries, serta kerangka tergantung, andXcode menggunakannya untuk membangun file UnityFramework.framework.
  • Unity-iPhone: Bagian peluncur tipis dalam target Unity-iPhone. Ini termasuk folder MainApp dan data representasi aplikasi seperti Layar Peluncuran, file .xib, ikon, data, dan file /Info.plist, dan menjalankan perpustakaan. Target Unity-iPhone memiliki ketergantungan tunggal pada target UnityFramework.

Catalog

Folder Classes mengandung kode yang mengintegrasikan Unity Runtime dan Objective-C. Unity menyimpan titik masuk aplikasi dalam file main.mm dan UnityAppController.mm/h di dalam folder ini. Anda dapat membuat AppDelegate Anda sendiri berasal dari UnityAppController, atau, jika ada 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
Anda termasuk AppController.h, Anda dapat menyertakan WordPress.org bukan. Jika folder Plugins/iOS Anda termasuk _ AppController.mm / h_, Anda dapat menggabungkan dan mengubah nama mereka.

File Profil Internal.h juga mendefinisikan kondisi kompiler untuk mengaktifkan internal ProfilerJendela yang membantu Anda untuk mengoptimalkan permainan Anda. Ini menunjukkan berapa banyak waktu yang dihabiskan di berbagai bidang permainan Anda. Sebagai contoh, dapat melaporkan persentase waktu yang dihabiskan rendering, aimating, atau dalam logika permainan Anda. More info
Lihat di Glossary
. Kode di folder ini tidak berubah sering, dan Anda dapat menempatkan kelas kustom di sini. Jika Anda memilih mode Append, Xcode melestarikan perubahan pada folder ini antara build. Namun, fungsi ini tidak mendukung beberapa target build dan membutuhkan struktur tetap dari folder Libraries.

Satuan internal Profiler cepat dan tidak mengganggu, dan memberi makan informasi dasar tentang:

  • Subsistem mana yang mengambil sebagian besar waktu bingkai.
  • Ukuran .NET heap.
  • Perhitungan dan durasi acara GC.

Untuk informasi lebih lanjut, lihat dokumentasi tentang Profiler built-in.

Data folder

Folder ini berisi aset serialisasi aplikasi Anda, serta rakitan .NET (.dll atau file .dat) baik kode penuh atau metadata, tergantung pada pengaturan pengupasan kode. File mesin.config mengatur berbagai. Layanan NET seperti keamanan dan WebRequest. Xcode menyegarkan isi folder ini dengan setiap build. Anda tidak boleh melakukan perubahan.

Secara default, Data folder Target Membership adalah target Unity-iPhone, dan Pencarian Unity Runtime untuk di mainBundle. Untuk mengubah bundel default di mana tampilan Unity Runtime untuk folder Data, hubungi setDataBundleId: "com.my.product" pada instance UnityFramework sebelum Anda memanggil salah satu fungsi lari. Misalnya, jika Anda ingin memiliki Data bersama dengan panggilan UnityFramework, gunakan setDataBundleId: "com.unity3d.framework" dan set Target Membership ke UnityFramework.

Sitemap Sumber Daya On-Demand hanya didukung ketika folder Note: adalah bagian dari target Aplikasi dan bukan bagian dari target UnityFramework.Data folder is a part of the Application target and not a part of the UnityFramework target.

folder Perpustakaan

Folder Libraries mengandung libil2cpp.a untuk IL2CPPBack-end scripting bersatu yang dapat Anda gunakan sebagai alternatif untuk Mono ketika proyek bangunan untuk beberapa platform. More info
Lihat di Glossary
. File libiPhone-lib.a adalah perpustakaan statis Unity Runtime, dan RegisterMonoModules.cpp mengikat kode asli Unity dengan .NET. Xcode dan menyegarkan isi folder ini dengan setiap build. Anda tidak boleh melakukan perubahan.

folder kustom

Anda dapat menempatkan file kustom Anda di sini.

File grafis

Ikon dan layar percikan (.PNG file) terletak di katalog aset di folder USB-Kabel. Unity secara otomatis mengelola file-file ini. Peluncuran Layar, Pembuat Antarmuka XML mereka (file xib), dan file Storyboard disimpan di folder akar Proyek. Untuk mengatur mereka di Unity menggunakan jendela Player Settings (menu: Edit > Project Settings > Player Settings). Ketika Anda membuat gambar peluncuran kustom, pastikan mereka mematuhi Panduan Antarmuka Manusia Apple.

PDF file

Anda dapat mengelola file /Info.plist dalam target Unity-iPhone (dapat diakses melalui mainBundle) dari Unity's Player Settings (menu: Edit > Project Settings > Player Settings, kemudian pilih bagian Other dan gulir ke bagian Identification; untuk rincian lebih lanjut, lihat dokumentasi pada ). Ketika Unity membangun Pemain, memperbarui file ini daripada menggantinya. Jangan membuat perubahan untuk itu kecuali Anda harus.

File WordPress.org (dapat diakses melalui bundleWithIdentifier:@"com.unity3d.framework") adalah bagian dari UnityFramework. Anda dapat menyimpan nilai di sini bukan file /Info.plist utama untuk memastikan bahwa Anda masih bisa mendapatkan nilai-nilai ini jika UnityFramework dipindahkan ke aplikasi lain.

File lain

Ini termasuk file proyek Xcode (file.xcodeproj), dan tautan framework yang hanya muncul di Project Navigator.

Membangun proyek Xcode dengan xcodebuild

Ketika Anda menggunakan argumen baris perintah untuk menentukan pengaturan build, ini mempengaruhi semua target proyek Xcode. Untuk mencegah ini, beberapa pengaturan build memiliki versi yang cukup besar yang dapat Anda gunakan untuk menentukan yang menargetkan pengaturan build Anda mempengaruhi. Ini diterapkan melalui Pengaturan yang ditentukan pengguna (*APP suffix digunakan untuk target aplikasi dan *FRAMEWORK suffix untuk target framework).

Ketika membangun dengan xcodebuild, gunakan versi yang cukup untuk:

Catalog Login PRODUK_URL_APP

PROVISIONING_PROFILE Login PROVISIONING_PROFILE_APP

PROVISIONING_PROFILE_SPECIFIER -> PROVISIONING_PROFILE_SPECIFIER_APP

Login Login LAIN_LDFLAGS_FRAMEWORK

Berdasarkan pipa build kustom Anda, Anda dapat memperluas daftar untuk menutupi pengaturan lain.

Modifikasi proyek Xcode

Untuk memodifikasi proyek Xcode yang dihasilkan, gunakan Xcode.PBXProject.

Target Proyek

Sebagai Unity 2019.3, PBXProject.GetUnityTargetName dan pbxProject->TargetGuidByName("Unity-iPhone") adalah usang. Sebagai gantinya, Anda dapat menggunakan pbxProject->GetUnityFrameworkTargetGuid(), atau pbxProject->GetUnityMainTargetGuid():

// Obsolete
string targetGuid = proj.TargetGuidByName("Unity-iPhone");
string targetGuid = proj.TargetGuidByName(PBXProject.GetUnityTargetName());

// Instead call one of these
string targetGuid = proj.GetUnityFrameworkTargetGuid(); 
string targetGuid = proj.GetUnityMainTargetGuid();

Jika Anda perlu mendukung jalur kode lama dan baru dalam paket Anda atau custom build postprocessor, ikuti langkah-langkah ini:

  1. Rely pada kemampuan impor plugin setiap kali memungkinkan (misalnya, untuk menentukan framework tambahan).
  2. Gunakan refleksi:
string mainTargetGuid;
string unityFrameworkTargetGuid;
        
var unityMainTargetGuidMethod = proj.GetType().GetMethod("GetUnityMainTargetGuid");
var unityFrameworkTargetGuidMethod = proj.GetType().GetMethod("GetUnityFrameworkTargetGuid");
                
if (unityMainTargetGuidMethod != null && unityFrameworkTargetGuidMethod != null)
{
    mainTargetGuid = (string)unityMainTargetGuidMethod.Invoke(proj, null);
    unityFrameworkTargetGuid = (string)unityFrameworkTargetGuidMethod.Invoke(proj, null);
}
else
{
    mainTargetGuid = proj.TargetGuidByName ("Unity-iPhone");
    unityFrameworkTargetGuid = mainTargetGuid;
}
  • Unity sebagai Perpustakaan untuk iOS ditambahkan di .NewIn20193
Dalam proses pembangunan iOS
pengaturan build iOS