Compilare il tuo gioco Unity per iOS da Windows
Unity su Windows può puntare a iOS, ma si ferma a metà. Scrive un progetto Xcode, e solo Xcode su un Mac può trasformarlo in un’app. Questa guida mostra come spostare il progetto su un Mac e archiviarlo. Copre anche le build in cloud di Unity, che fanno a meno del Mac.
Cosa fa Unity su Windows, e cosa richiede il Mac
La pagina di Unity sul setup iOS dice che Xcode è disponibile solo per macOS. Quindi se il tuo computer non usa macOS, non puoi compilare l’app in locale. Unity compila per iOS in due passaggi. Unity scrive un progetto Xcode, poi Xcode compila l’app da quel progetto.
Su Windows ottieni solo il primo passaggio. L’opzione Run in Xcode compare solo quando Unity gira su macOS. Il secondo passaggio fa un lavoro vero. La documentazione di Unity dice che lì Xcode esegue IL2CPP, che compila il C++ generato dai tuoi script in libGameAssembly.a.
Passo 1: esportare il progetto Xcode su Windows
- Aggiungi il modulo iOS Build Support al tuo editor in Unity Hub.
- Apri File, poi Build Profiles, e rendi iOS la piattaforma attiva.
- Clicca Build e scegli una cartella vuota, per esempio Builds/iOS.
La cartella contiene Unity-iPhone.xcodeproj. La documentazione di Unity descrive due target al suo interno. Unity-iPhone è un piccolo target di avvio, e UnityFramework contiene il runtime e il tuo codice. Non toccare le cartelle Data e Libraries, perché Unity le aggiorna a ogni build.
Passo 2: copiarlo sul Mac
Windows include tar da Windows 10 build 17063. Il client scp arriva con OpenSSH per Windows, una funzionalità facoltativa dalla build 1809. Se scp manca, aggiungi OpenSSH Client nelle funzionalità facoltative. Comprimi la cartella, copiala via Tailscale e decomprimila sul Mac:
cd Builds tar -czf ios-build.tgz iOS scp ios-build.tgz you@your-mac:~/ ssh you@your-mac "mkdir -p ~/MyGame && tar -xzf ~/ios-build.tgz -C ~/MyGame"
Da Linux o WSL, rsync invia solo ciò che è cambiato dall’ultima copia. Aiuta dopo piccole modifiche a un gioco grande.
rsync -az --delete Builds/iOS/ you@your-mac:~/MyGame/iOS/
Funziona anche git, ma un export completo è grande e cambia a ogni build. Quasi tutti i team copiano l’export e usano git per il progetto Unity.
Passo 3: archiviare sul Mac
Puoi aprire il .xcodeproj in Xcode attraverso lo schermo del Mac. Scegli lo schema Unity-iPhone e Any iOS Device, poi scegli Product, poi Archive. Oppure resta nel terminale via SSH. Prima elenca target e schemi:
cd ~/MyGame/iOS xcodebuild -list -project Unity-iPhone.xcodeproj
Poi archivia con lo schema di avvio. CODE_SIGNING_ALLOWED=NO crea un archivio di prova senza certificato, che dimostra che il progetto compila.
xcodebuild -project Unity-iPhone.xcodeproj -scheme Unity-iPhone \ -configuration Release -destination 'generic/platform=iOS' \ -archivePath build/Game.xcarchive archive \ CODE_SIGNING_ALLOWED=NO
Per pubblicare, togli quel flag e firma con il tuo team. Poi esporta con -exportArchive e un ExportOptions.plist con il metodo app-store-connect. La nostra guida alla pubblicazione ha tutti i comandi di firma e upload.
Alcuni giochi usano External Dependency Manager di Google per gli SDK iOS. Scrive un Podfile ed esegue CocoaPods dopo la build. Se il tuo export ha un Podfile, esegui pod install sul Mac. Poi compila il .xcworkspace invece del .xcodeproj. CocoaPods non è preinstallato, quindi aggiungilo con brew install cocoapods.
Cosa abbiamo testato, e cosa no
Unity non può girare in CI senza licenza, quindi non abbiamo esportato un vero gioco Unity. Abbiamo invece testato la metà sul Mac con un progetto sostitutivo con la stessa forma: un target app di avvio e un target framework. Il 19 ottobre 2026, il runner macos-26 di GitHub l’ha archiviato con Xcode 26.6. Poi un runner Windows l’ha compresso con il tar di Windows. Un secondo Mac ha decompresso quella copia e l’ha archiviata di nuovo.
Xcode 26.6
Build version 17F113
Schemes:
Game-iPhone
GameFramework
** BUILD SUCCEEDED **
** ARCHIVE SUCCEEDED **
scp.exe C:\Windows\System32\OpenSSH\scp.exe
OpenSSH_for_Windows_9.5p2, LibreSSL 3.8.2
** ARCHIVE SUCCEEDED **Un gioco vero richiede molto più tempo, perché il Mac compila tutto il codice IL2CPP. Se una build si ferma con Permission denied su un file .sh, la copia ha perso il permesso di esecuzione. Esegui chmod +x su quel file e compila di nuovo.
L’opzione cloud: Unity Build Automation
La documentazione di Unity suggerisce Build Automation a chi non ha un Mac. Compila il tuo gioco sui server di Unity. Dal 1 marzo 2026, Unity include 100 minuti di build Mac al mese. Dopo, una macchina Mac standard costa $0.07 per minuto di build, secondo l’articolo di Unity sui costi DevOps.
Chi non dovrebbe noleggiare un Mac per questo
- Poche build al mese. I 100 minuti Mac gratuiti di Unity Build Automation possono bastarti, senza nessun Mac.
- Build a ogni commit. Un servizio di CI o un runner macOS self-hosted funziona meglio che copiare cartelle a mano.
- Lavoro iOS quotidiano. Se usi un Mac ogni giorno, comprarne uno può costare meno nell’arco di un anno.
Quando conviene un Mac a noleggio
Alcuni problemi richiedono Xcode aperto. Errori di firma, errori di link dei plugin e crash nel simulatore si risolvono più facilmente a mano. Un pass giornaliero MacRun è un Mac mini M6 dedicato a $15, e una settimana costa $59. Xcode 27.1 è il default ed è installato anche Xcode 26.6. Ti colleghi da Windows con Tailscale e qualsiasi viewer VNC.
Il Mac viene cancellato quando il pass finisce. Prima scarica il tuo .ipa e fai push delle modifiche. Per un iPhone vero, invia la build tramite TestFlight, perché un Mac remoto non vede un telefono collegato al tuo PC. La nostra guida su come creare app iOS su Windows confronta Unity con altri motori.
Domande frequenti
Unity può compilare un’app iOS su Windows?
+
Solo a metà. Unity su Windows scrive il progetto Xcode. La documentazione di Unity dice che Xcode è disponibile solo per macOS, quindi l’app vera e propria si compila su un Mac o in Unity Build Automation.
Come compilo un progetto Xcode di Unity da riga di comando?
+
Sul Mac, esegui xcodebuild -list per vedere gli schemi. Poi esegui xcodebuild archive con lo schema Unity-iPhone e una destinazione iOS generica. Esporta l’archivio con -exportArchive per ottenere un .ipa.
Quale versione di Xcode serve a Unity?
+
La documentazione di Unity 6.6 consiglia Xcode 16 o successivo e supporta iOS 15 e superiori. Un Mac MacRun ha Xcode 27.1 come default ed è installato anche Xcode 26.6.
Quanto costa Unity Build Automation per iOS?
+
L’articolo di Unity sui costi DevOps, in vigore dal 1 marzo 2026, include 100 minuti di build Mac al mese. Dopo, una macchina Mac standard costa $0.07 per minuto di build.
Come copio una build iOS di Unity da Windows a un Mac?
+
Comprimi la cartella dell’export con tar, che Windows include da Windows 10 build 17063. Copiala con scp, poi decomprimila sul Mac. Da Linux o WSL, rsync invia solo ciò che è cambiato.
Posso provare la mia build iOS di Unity su un iPhone da un Mac remoto?
+
Non via USB, perché un Mac remoto non vede un telefono collegato al tuo PC. Carica la build su TestFlight e installala sul telefono da lì.