Scegliere il template Unity: 2D (URP) o 2D Core
Poiché la tua app mostra dati in una tabella e non necessita di grafica 3D complessa, il template 2D è la scelta migliore per alcuni motivi:
- Ottimizzato per UI e interfacce senza overhead di rendering 3D
- Ha il Canvas già pronto per l’UI
- Leggero e più veloce su dispositivi Android
Se vuoi un’interfaccia semplice e leggera → 2D Core è sufficiente. Se non hai bisogno di effetti avanzati, rimani su 2D Core per un progetto più leggero.
Se vuoi un design più moderno, con luci ed effetti dinamici → 2D URP è la scelta migliore. Se invece vuoi UI con effetti grafici professionali, scegli 2D URP.
Impostazioni del progetto
Apri File > Build Settings e seleziona:
- Piattaforma: Android → Clicca su “Switch Platform”.
- Target API Level: Imposta una versione compatibile con la maggior parte dei dispositivi (es. Android 7.0 o superiore).
Ora vai in Edit > Project Settings > Player e imposta:
- Resolution and Presentation:
- Default Orientation → Portrait
- Allowed Orientations → Spunta solo Portrait e/o Portrait Upside Down (se vuoi supportarlo)
Configurare il Canvas per adattarsi a tutti gli schermi
Per rendere l’interfaccia scalabile su qualsiasi dispositivo Android:
- Aggiungi un Canvas (se non è già presente).
- Imposta il CanvasScaler su:
- UI Scale Mode: Scale With Screen Size
- Reference Resolution: Ad esempio, 1080×1920 (risoluzione portrait standard).
- Screen Match Mode: Match Width Or Height
- Match: Mettilo su 0.5 per un adattamento equilibrato tra larghezza e altezza.
- Per ogni UI Element, usa:
- Anchor Points dinamici (es. Stretch per elementi che devono riempire lo schermo).
- Pivot e Positioning relativi per evitare posizionamenti assoluti.
Supporto per diversi schermi Android
Dato che i dispositivi Android hanno rapporti di aspetto diversi (16:9, 18:9, 21:9 ecc.), evita di usare posizioni assolute per i tuoi elementi UI. Quindi:
- Usa Layout Groups per gestire spaziatura e allineamento automatico.
- Testa la UI con il Device Simulator (finestra Game > Device).
Installare NPOI
La libreria NPOI per caricare file Excel non è inclusa di default in Unity, quindi è necessario scaricarla:
- Vai su NuGet Gallery – NPOI
- Scarica il file .nupkg (ad esempio, l’ultima versione disponibile)
Il file .nupkg è un archivio ZIP. Devi estrarre le DLL necessarie:
- Rinomina il file
.nupkgin.zip - Estrai il contenuto con WinRAR, 7-Zip o Esplora Risorse
- Dentro la cartella estratta, vai in:
- lib/netstandard2.1/ oppure lib/net452/
- Prendi i file NPOI.dll, NPOI.OOXML.dll, NPOI.OpenXml4Net.dll, SharpZipLib.dll
- Crea una cartella Plugins nella cartella Assets (se non esiste già)
- Copia dentro tutte le DLL estratte
Per configurare NPOI è necessario:
- Seleziona le DLL dentro Unity (Assets/Plugins)
- Nel Inspector, imposta Any Platform
Se hai errori di compatibilità, prova a usare le versioni di NPOI per .NET 4.5.2 o NET Standard 2.0, perché Unity 2021+ supporta solo certe versioni .NET.
Se stai cercando di usare NPOI tramite NuGet in Visual Studio, devi installare i pacchetti corretti tramite il NuGet Package Manager. Ecco come farlo:
Aggiungi il pacchetto NuGet di NPOI:
- In Visual Studio, clicca con il tasto destro sulla soluzione nel pannello Esplora Soluzioni.
- Seleziona Gestisci pacchetti NuGet per la soluzione.
- Vai alla scheda Sfoglia e cerca NPOI.
- Seleziona il pacchetto NPOI e clicca su Installa.
In alternativa, puoi usare il Package Manager Console di Visual Studio per eseguire il comando:
Install-Package NPOI
Questo installerà le librerie NPOI direttamente nel progetto Visual Studio. Se Visual Studio non trova NPOI, prova a forzare Unity a ricreare i riferimenti:
- Vai su Edit > Preferences > External Tools
- In Generate .csproj files for, abilita “Registry Packages” e “Local Packages”
- Cancella la cartella
Library/del progetto - Chiudi e riapri Unity
- Apri lo script con “Open C# Project” (dal menu Assets > Open C# Project)
Ora Visual Studio dovrebbe riconoscere la libreria NPOI.
A questo punto riferisciti alla guida di NPOI, motlo semplice, per aprire un file Excel in C# con Unity.

