Come importare un foglio di sprite in Unity

Inserire un PNG in un progetto Unity richiede un secondo. Ottenere sprite nitidi, correttamente dimensionati e ritagliati richiede circa sei impostazioni, e la maggior parte ha valori predefiniti sbagliati per il 2D. Ecco cosa fa ciascuna, come ritagliare il foglio nello Sprite Editor e quando è più veloce ritagliarlo prima che arrivi in Unity.

Inizia da Texture Type

Seleziona il PNG importato nella finestra Project e guarda l’Inspector. Il primo menu è Texture Type, e il valore predefinito è Default — il percorso delle texture 3D. Cambialo in Sprite (2D and UI).

Non è una modifica puramente estetica. Cambia la procedura di importazione eseguita, rende disponibili le opzioni degli sprite riportate sotto e indica a Unity di generare una Sprite risorsa anziché un semplice Texture2D. Senza di esso, SpriteRenderer non ha nulla da accettare e il pulsante Sprite Editor resta disattivato. Se il progetto è stato creato dal modello 2D, le nuove texture sono già impostate per default su Sprite, quindi controlla prima di cercare l’impostazione.

Ricorda di premere Applica in fondo all’Inspector. Unity non applica le impostazioni di importazione della texture finché non lo fai e le modifiche vengono annullate senza avviso se selezioni prima un’altra risorsa. Quasi tutti ci inciampano almeno una volta.

Sprite Mode: Single o Multiple

Sprite Mode determina se il file è uno sprite o molti.

  • Single — l’intera immagine è uno sprite. Usalo per fotogrammi singoli già ritagliati in file separati, per sfondi e per immagini dell’interfaccia.
  • Multiple — l’immagine contiene più sprite e definirai i loro rettangoli nello Sprite Editor. Usalo per un vero foglio che vuoi mantenere come unico file.
  • Poligono — genera una mesh personalizzata anziché un quadrilatero. Raramente è ciò che serve per un foglio di sprite; esiste soprattutto per ridurre il disegno sovrapposto di sprite grandi e perlopiù trasparenti.

Multiple è la modalità scelta istintivamente, ma vale la pena fermarsi. Conservare un foglio significa una texture, un lotto di chiamate di disegno e una risorsa da gestire. Dividerlo in PNG separati semplifica l’animazione, facilita le modifiche per fotogramma e non dipende da Unity per indovinare i confini delle celle. Entrambe le scelte sono valide; di solito decide l’affidabilità della griglia.

Ritaglio nello Sprite Editor

Con Sprite Mode impostato su Multiple, fai clic su Sprite Editor. Se il pulsante manca del tutto, il pacchetto 2D Sprite non è installato: aggiungilo da Window → Package Manager. Nell’editor, il Ritaglia menu a discesa in alto a sinistra offre tre tipi.

Automatico

Unity esamina la texture alla ricerca di isole di pixel non trasparenti e disegna un rettangolo intorno a ciascuna. Su un foglio pulito con spazi trasparenti e sprite ben separati, funziona bene e richiede un clic. Fallisce in modo prevedibile in tre casi: sprite che si toccano o sovrappongono vengono uniti in un unico rettangolo; un personaggio con parti staccate, come un’arma fluttuante o un’ombra separata, viene diviso in più rettangoli; qualsiasi foglio con uno sfondo non trasparente produce esattamente un rettangolo che copre tutto, perché l’intera immagine è opaca.

Il Method menu a discesa accanto conta quando ritagli di nuovo. Delete Existing cancella le correzioni manuali; Smart cerca di conservare i rettangoli che hai regolato; Safe aggiunge soltanto quelli nuovi. Usa Smart o Safe dopo aver corretto manualmente qualcosa.

Un foglio di sprite quattro per quattro di un guardaboschi con cappuccio verde e arco, in cui tutte le sedici pose hanno dimensioni coerenti e spazi uniformi tra loro, su uno sfondo trasparente
Un foglio abbastanza regolare per i tipi di ritaglio a griglia riportati sotto. Dimensioni degli sprite coerenti, spazi uniformi, sfondo trasparente: le condizioni presupposte da Griglia per dimensione della cella e quelle che un’esportazione generata da uno strumento offre automaticamente.

Griglia per dimensione delle celle

Indichi larghezza e altezza in pixel e Unity sovrappone una griglia alla texture. È la scelta corretta quando conosci le dimensioni delle celle, per esempio un foglio 512×512 di tessere 64×64. I campi Offset e Padding gestiscono fogli con un margine esterno o spazi tra celle. Impostali una volta e ogni cella cadrà correttamente, perché un foglio generato da uno strumento è davvero una griglia.

Griglia per numero di celle

Stessa idea, ma fornisci colonne e righe e Unity divide. Comodo se sai che il foglio è 4×4 ma non hai fatto i calcoli. Attenzione alle dimensioni non divisibili uniformemente: 1024 diviso 3 è 341.33 e l’arrotondamento appare come una striscia di un pixel dello sprite vicino su un bordo di ogni cella.

Il pivot conta più di quanto sembri. Ogni tipo di ritaglio ha un menu Pivot. Per personaggi che stanno sul terreno, Bottom è di solito corretto: mantiene i piedi a terra quando l’altezza dei fotogrammi varia. Per proiettili ed effetti, Center. Puoi anche impostare Custom e inserire coordinate normalizzate. Sbagliare qui è la causa più comune di animazioni che sembrano oscillare o scivolare.

Pixels Per Unit e cosa significa davvero

Pixels Per Unit (PPU) è il rapporto di conversione tra pixel della texture e unità del mondo di Unity. Il valore predefinito è 100: uno sprite di 100×100 pixel occupa esattamente un quadrato di una unità del mondo a scala 1.

Le unità del mondo di Unity sono astratte, ma fisica, dimensioni della telecamera e velocità di movimento sono tutte espresse in esse: il numero scelto determina quindi la scala dell’intero gioco. Due convenzioni comuni:

  • PPU = dimensione dei tasselli dello sprite. Se i tasselli misurano 16×16 pixel, imposta PPU a 16 e un tassello equivale a un’unità del mondo. Le Tilemap si allineano a coordinate intere e una gravità di −9.81 ha un significato approssimativamente fisico.
  • PPU = 100 per tutto. Più semplice se la grafica è ad alta risoluzione e non usi movimento basato su tasselli.

Conta la coerenza. Sprite con PPU diversi appaiono a scale diverse e correggere Transform sui singoli oggetti nasconde il problema complicando collider, fisica e riuso prefab. Imposta correttamente PPU all’importazione.

Filter Mode e compressione per pixel art

Due impostazioni determinano se la tua pixel art sembra pixel art oppure una macchia sfocata.

Filter Mode è impostato per default su Bilinear, che interpola tra texel quando uno sprite viene disegnato a un rapporto diverso da 1:1. Sulle texture fotografiche è ciò che desideri. Su un personaggio di 32×32 produce bordi morbidi e impastati. Impostalo su Point (no filter) per la pixel art e i confini dei pixel restano netti.

Compression è impostato per default su Normal Quality, che sulla maggior parte delle piattaforme significa un formato di compressione a blocchi. La compressione a blocchi approssima gruppi di pixel e sulla grafica a colori uniformi con bordi netti gli artefatti sono evidenti: aloni colorati intorno ai contorni, soprattutto vicino alla trasparenza. Imposta Compression su None per gli sprite in pixel art. Sì, la texture richiede più memoria; pochi fogli di sprite piccoli non compressi sono trascurabili rispetto a qualsiasi disponibilità di memoria moderna, mentre la differenza visiva non lo è.

Deseleziona anche Generate Mip Maps per gli sprite 2D sempre disegnati vicino alle dimensioni native. Le mipmap servono per texture viste a distanze diverse nel 3D; nel 2D consumano soprattutto memoria e talvolta fanno campionare agli sprite un livello più sfocato del previsto.

ImpostazionePixel artAlta risoluzione / 2D dipinto
Texture TypeSprite (2D and UI)Sprite (2D and UI)
Filter ModePoint (no filter)Bilineare
CompressioneNessunoQualità normale
Generate Mip MapsDisattivatoDisattivato per 2D, attivo se molto ridimensionato
Pixels Per UnitDimensioni delle tessere (8, 16, 32…)100
Max SizeAlmeno la dimensione maggiore del foglioAlmeno la dimensione maggiore del foglio
Controlla Max Size se lo sprite appare sfumato senza motivo. Unity limita per impostazione predefinita le texture importate a 2048 in alcune schede delle piattaforme. Un foglio largo 4096 viene ridotto a 2048 senza avviso, dimezzando la risoluzione prima che si applichino le impostazioni precedenti.

File già ritagliati rispetto al ritaglio in Unity

Il ritagliatore di Unity è efficace per ciò per cui è stato progettato: fogli prodotti da uno strumento, su una griglia reale, con spazi trasparenti. Grid By Cell Size su un’esportazione Aseprite è preciso e immediato, e non c’è motivo di farlo altrove.

I fogli dei generatori sono un problema diverso. Chiedere “foglio di sprite 4×4” produce qualcosa che assomiglia a una griglia senza esserlo: spazi variabili, dimensioni dipendenti dalla posa e contenuto decentrato. Grid By Cell Size taglia le teste. Automatic unisce due fotogrammi che si toccano e divide quello con lo scudo staccato. Finisci per trascinare sedici rettangoli nello Sprite Editor, un modo lento di impiegare venti minuti.

Ritagliare il foglio prima di importarlo evita il problema. Il nostro Ritagliatore di fogli di sprite trova i confini degli sprite tramite il canale alfa anziché coordinate presunte, rifila ogni fotogramma al proprio contenuto ed esporta PNG singoli. Questi vengono importati in Unity con Sprite Mode Single senza alcun lavoro nello Sprite Editor. Se il rilevamento automatico non riesce, la scheda Manuale e preimpostazioni consente di trascinare ogni linea della griglia nello spazio giusto: sei trascinamenti per un foglio di sedici fotogrammi, anziché sedici rettangoli.

Esiste un vero compromesso. I file singoli comportano più risorse e, senza uno Sprite Atlas, più chiamate di disegno. Se questo conta per il tuo progetto, ritaglia esternamente per ottenere fotogrammi corretti, poi aggiungi uno Sprite Atlas risorsa (Assets → Create → 2D → Sprite Atlas) e trascina la cartella nell’elenco Objects for Packing. Ottieni confini corretti e rendering raggruppato, con Unity che si occupa dell’impacchettamento in cui è davvero efficace.

Dagli sprite a un’animazione

  1. Seleziona i fotogrammi in ordine nella finestra Project: sotto-sprite di un foglio ritagliato o PNG singoli.
  2. Trascina la selezione in Scene o Hierarchy. Unity chiede dove salvare e crea un Animation Clip e un Animator Controller collegato.
  3. Apri la finestra Animation per regolare la frequenza di campionamento. Il valore predefinito di 12 campioni al secondo è adatto a molti cicli di camminata; 24 è più fluido; valori a una cifra danno un effetto rétro intenzionalmente scattoso.
  4. Conferma che i fotogrammi siano nell’ordine giusto. Unity ordina per nome, quindi frame_10 si colloca tra frame_1 e frame_2 a meno di completare con zeri fino a frame_01.
  5. Per altre clip, ripeti il processo e collega le transizioni nell’Animator oppure controlla direttamente i fotogrammi da script se preferisci evitare del tutto l’Animator.

Domande frequenti

Perché il mio sprite ha una linea sottile del fotogramma adiacente lungo un bordo?

Contaminazione della texture. La cella non divide uniformemente la texture oppure il filtro bilineare campiona oltre il rettangolo. Imposta Filter Mode su Point, disattiva compressione e verifica i calcoli. Uno o due pixel trasparenti tra sprite nella sorgente la prevengono permanentemente.

Dovrei usare Sprite Atlas o un grande foglio?

Sprite Atlas, nella maggior parte dei casi. Permette sprite come file separati, facili da modificare e riordinare, mentre Unity li impacchetta in una texture condivisa durante la compilazione. Un mega-foglio manuale dà risultati simili durante l’esecuzione ma è molto più scomodo a ogni modifica.

L’animazione funziona ma il personaggio tremola su e giù. Perché?

Fotogrammi di altezze diverse con un pivot Center condiviso. Imposta il pivot su Bottom oppure aggiungi margini a ogni fotogramma fino a dimensioni identiche prima di importare, affinché il contenuto occupi una posizione coerente in ciascuno.

Devo cambiare qualcosa per Universal Render Pipeline?

Le impostazioni di importazione sono uguali. Cambia il materiale: URP 2D usa Sprite-Lit-Default quando è attivo il 2D Renderer, quindi sprite senza illuminazione possono apparire neri finché non esiste una luce nella scena. Imposta il materiale dello SpriteRenderer su Sprite-Unlit-Default oppure aggiungi una Global Light 2D.

Ritaglia il foglio prima di importarlo in Unity

Se il ritaglio automatico di Unity non gestisce bene il foglio, ritaglialo prima nel browser e importa PNG singoli puliti. Magic Slice rileva i confini degli sprite dal canale alfa; Manuale e preimpostazioni permette di trascinare personalmente le linee. Non viene caricato nulla: tutto funziona localmente.

Apri Ritagliatore di fogli di sprite