Unity è un motore di gioco multipiattaforma per creare applicazioni 2D e 3D con supporto per la compilazione su piattaforme mobili, desktop e console. Viene utilizzato sia per lo sviluppo di giochi che per applicazioni non ludiche in architettura, automobilistico e vendita al dettaglio. Secondo Unity Technologies, 2025, oltre il 70% dei giochi mobili nella top 1000 dell’App Store sono creati con Unity. C# è il linguaggio di programmazione principale del motore con cui si scrive la logica di gioco, i componenti e gli script dell’editor.
Punti chiave
Unity è un ambiente di sviluppo per giochi e applicazioni in tempo reale creato da Unity Technologies nel 2005. Il motore supporta 27 piattaforme, tra cui iOS, Android, Windows, macOS, PlayStation, Xbox, Nintendo Switch e WebGL. Secondo il report Unity Gaming Report (2024), nel 2023 sono stati lanciati mensilmente oltre 3 miliardi di giochi mobili su Unity.
La caratteristica principale di Unity è la sua architettura orientata ai componenti. Ogni oggetto nella scena è un contenitore vuoto (GameObject) a cui vengono aggiunti componenti che ne definiscono il comportamento: rendering, fisica, suono, animazione e logica personalizzata. Questo distingue Unity dai motori gerarchici come Unreal Engine, dove il comportamento è definito tramite ereditarietà delle classi.
Secondo Statista (2025), Unity detiene il 48% del mercato dei motori di gioco per dispositivi mobili, superando Unreal Engine (15%) e le soluzioni proprietarie (37%). Gli studi indie scelgono il motore per la sua bassa barriera d’ingresso e i grandi editori per la flessibilità della pipeline di compilazione per diverse piattaforme.
L’architettura di Unity si basa su quattro concetti fondamentali: scene, GameObjects, componenti e prefab. Comprendere questa gerarchia è necessario per lavorare efficacemente con il motore.
Una scena (Scene) è un contenitore che racchiude tutti gli oggetti di un livello di gioco o stato dell’applicazione. Ogni scena ha il proprio insieme di GameObjects, sorgenti luminose, telecamere e sorgenti audio. La transizione tra le scene avviene tramite SceneManager.LoadScene().
Un GameObject è il mattone fondamentale di Unity. Non ha rappresentazione visiva né comportamento predefinito — è un nodo vuoto nella gerarchia della scena. Tutto il comportamento e l’aspetto vengono aggiunti tramite componenti. Ad esempio, per rendere visibile un GameObject si aggiunge MeshRenderer; per farlo obbedire alla fisica si aggiunge Rigidbody.
MonoBehaviour è la classe base per tutti gli script personalizzati in Unity. Fornisce un ciclo di vita: Awake (chiamato al caricamento dell’oggetto), Start (prima del primo frame), Update (ogni frame), FixedUpdate (ogni passo fisico) e OnDestroy (alla distruzione).
Ogni componente può interagire con altri componenti sullo stesso GameObject tramite GetComponent<T>(). Ciò consente di creare sistemi modulari: ad esempio, un componente Health può essere indipendente da un componente Movement, ma entrambi possono reagire agli eventi tramite UnityEvent.
Un prefab (Prefab) è un modello di GameObject salvato nel progetto come asset. Le modifiche al prefab vengono automaticamente applicate a tutte le sue istanze nelle scene. È il meccanismo centrale di riutilizzo in Unity, che accelera le iterazioni e riduce gli errori.
I prefab supportano l’annidamento (Nested Prefabs): un prefab può contenere altri prefab, formando una gerarchia. Ad esempio, un prefab di auto può contenere prefab di ruota, motore e carrozzeria, ciascuno con i propri componenti e impostazioni.
Vediamo un componente base di movimento del personaggio in C#. Questo script sposta un oggetto in avanti rispetto alla sua rotazione corrente e gestisce l’input dell’utente.
using UnityEngine;
public class PlayerMovement : MonoBehaviour
{
public float speed = 5f;
void Update()
{
float move = Input.GetAxis("Vertical");
Vector3 direction = transform.forward * move;
CharacterController controller = GetComponent<CharacterController>();
controller.SimpleMove(direction * speed);
}
}
Il metodo Update() viene chiamato ogni frame. Input.GetAxis legge l’input verticale, SimpleMove applica il movimento con la fisica. CharacterController è un componente integrato di Unity che gestisce le collisioni senza dover scrivere fisica delle collisioni.
Esempio di script per gestire le collisioni e applicare danno:
using UnityEngine;
public class DamageHandler : MonoBehaviour
{
public int health = 100;
void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.CompareTag("Enemy"))
{
health -= 10;
if (health <= 0)
{
Destroy(gameObject);
}
}
}
}
Il metodo OnCollisionEnter viene chiamato dal motore fisico quando un GameObject collide con un altro oggetto. Il confronto per tag (CompareTag) determina con cosa è avvenuta la collisione. Questo approccio consente di riutilizzare il componente DamageHandler per il giocatore, i nemici e gli oggetti distruttibili senza modificare il codice.
Unity fornisce strumenti specializzati per ottimizzare i giochi su dispositivi mobili con risorse limitate. Le aree chiave di ottimizzazione includono la gestione della memoria, la riduzione delle draw call e l’adattamento a diverse risoluzioni dello schermo.
Per le piattaforme mobili, Unity offre Asset Bundles, un sistema di impacchettamento dei contenuti che carica le risorse su richiesta, riducendo le dimensioni iniziali dell’app. Ciò è particolarmente importante per i giochi con molti livelli o personaggi dove caricare tutti gli asset contemporaneamente è impossibile a causa dei limiti degli app store.
Il Profiler di Unity consente di analizzare l’utilizzo di CPU, GPU e memoria su un dispositivo reale tramite ADB (Android) o USB (iOS). Secondo la Documentazione Unity (2025), ottimizzare le draw call a 100–300 su dispositivi mobili offre 60 FPS stabili su dispositivi di fascia media.
Per i giochi mobili, Unity utilizza il sistema Input System, che astrae i comandi tattili, l’accelerometro e il giroscopio sotto un’API unificata. Joystick virtuali, swipe e tap vengono configurati tramite Input Action Assets senza dover scrivere codice di gestione del tocco.
Il sistema UI di Unity (uGUI) supporta Canvas Scaler per l’adattamento automatico dell’interfaccia a diversi rapporti d’aspetto dello schermo. Il componente Canvas Scaler con modalità Scale With Screen Size garantisce che i pulsanti non escano dallo schermo su tablet e smartphone.
La compilazione di giochi mobili in Unity avviene tramite la finestra Build Settings. Android richiede Android SDK e NDK; Unity genera un progetto Gradle che compila in APK o AAB. iOS richiede Xcode — Unity crea un progetto Xcode con un wrapper Objective-C/Swift che viene infine compilato tramite Apple.
IL2CPP è un’opzione di compilazione che traduce il codice C# in C++ e poi in codice ARM nativo. Secondo Unity Benchmark (2024), IL2CPP aumenta le prestazioni del 15–25% su iOS e Android rispetto a Mono, ma aumenta il tempo di compilazione e la dimensione del binario.
Unity viene confrontato con Unreal Engine e Godot come le principali alternative nel mercato dei motori di gioco. La scelta dipende dal tipo di progetto, dalle competenze del team e dalle piattaforme target.
| Criterio | Unity | Unreal Engine 5 | Godot 4 |
|---|---|---|---|
| Linguaggio | C# | C++ / Blueprints | GDScript / C# |
| Grafica | Built-in / URP / HDRP | Nanite + Lumen | Renderer personalizzato |
| Ottimizzazione mobile | Eccellente (70% dei giochi mobili) | Buona (porting AAA) | Buona (motore leggero) |
| Barriera d’ingresso | Bassa | Alta | Bassa |
| Licenza | Personal / Pro / Enterprise | 5% di royalty (fino a $1M) | MIT (gratuita) |
Per i giochi mobili, Unity rimane lo standard del settore grazie al suo sistema di rendering flessibile (URP — Universal Render Pipeline), che ottimizza la grafica per GPU mobili con potenza di calcolo limitata. URP riduce automaticamente il numero di passaggi di rendering e raggruppa gli shader per diminuire il carico sulla GPU.
Unreal Engine 5 offre la migliore qualità grafica (Nanite per la geometria, Lumen per l’illuminazione) ma richiede hardware più potente e maggiore esperienza del team. Godot attrae per il codice open source e le dimensioni ridotte, ma ha meno asset pronti e un mercato di specialisti più piccolo.
Unity è attivamente utilizzato al di fuori dello sviluppo di giochi — in architettura, automobilistico, vendita al dettaglio e istruzione. La visualizzazione in tempo reale (RT3D) consente di creare presentazioni 3D interattive, simulatori e configuratori di prodotti.
Nel settore automobilistico, Unity viene utilizzato per creare gemelli digitali di auto e sistemi HMI (Human-Machine Interface). Mercedes-Benz e BMW usano Unity per prototipare cruscotti e sistemi multimediali prima che venga costruito un prototipo fisico.
Nel retail, Unity viene applicato ai configuratori di prodotti: IKEA (posizionamento virtuale di mobili), Nike (personalizzazione di scarpe) e Audi (configuratore di auto) — tutti questi progetti sono costruiti su Unity. L’utente può cambiare colori, materiali e opzioni in tempo reale vedendo il risultato in 3D.
Per progetti non ludici, Unity fornisce strumenti specializzati: AR Foundation (per ARKit e ARCore), Pixyz Plugin (per importazione modelli CAD) e Unity Reflect (per sincronizzazione con modelli BIM di Revit). L’azienda sta sviluppando attivamente la direzione Unity Industry, che include servizi cloud per clienti enterprise.
Domande frequenti
Unity è considerato uno dei motori di gioco più accessibili per i principianti grazie alla documentazione estesa, ai corsi gratuiti Unity Learn e a un’enorme comunità. Per iniziare, basta conoscere le basi di C# e comprendere i principi dell’architettura a componenti. La maggior parte dei principianti crea il primo gioco in 2–3 mesi.
Sì, Unity dispone di una pipeline 2D completa: Sprite Renderer, Fisica 2D (Box2D), Tilemap per creare livelli da tile e 2D Animation per l’animazione scheletrica degli sprite. Molti giochi 2D popolari, tra cui Hollow Knight e Cuphead, sono stati creati con Unity. Gli strumenti 2D sono integrati nel motore senza necessità di installare plugin.
Unity Personal è gratuito con un fatturato annuo fino a 200.000 dollari. Unity Pro costa 2.040 dollari all’anno per sviluppatore e include strumenti avanzati di profilazione, compilazione cloud e supporto prioritario. Per lo sviluppo mobile, le funzionalità di Personal sono sufficienti per la maggior parte dei progetti indie.
Cocos2d è un framework 2D con supporto per C++, Lua e JavaScript, orientato a giochi 2D semplici. Unity è un motore 3D/2D completo con editor, strumenti visivi e supporto per 27 piattaforme. Cocos2d è popolare in Asia per i giochi ipercasuali, mentre Unity è una scelta universale per qualsiasi genere.
Sì, Unity ha supporto integrato per AR e VR tramite AR Foundation (ARKit + ARCore), XR Interaction Toolkit e OpenXR. Progetti VR come Half-Life: Alyx (dimostrazione tecnica) e VRChat sono stati creati con Unity. Il motore supporta tutti i principali visori VR: Meta Quest, HTC Vive, Valve Index e PlayStation VR.
Riepilogo
Svilupperemo un'applicazione mobile chiavi in mano
IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.
Leggi anche