top of page

Il giorno in cui i nostri shader sparirono dalla build

Immagine del redattore: Marcel Dütscher
Marcel Dütscher
27 giu
Tempo di lettura: 1 min

Nell'editor di Unity era tutto perfetto. Nella build finita: superfici rosa ed effetti mancanti. Benvenuti in una delle trappole più cattive di Unity, e in alcune sue parenti.


Shader stripping. Durante la build Unity butta via tutto ciò che apparentemente non serve, shader compresi. Il problema: se carichi gli shader a runtime con Shader.Find() (come facciamo noi con più di 20 shader personalizzati per acqua, atmosfera, ologrammi e altro), Unity non vede nessun riferimento a essi in alcuna scena. Risultato: lo shader c'è nell'editor e sparisce nella build. La soluzione è poco spettacolare ma essenziale: ognuno di questi shader va messo nella lista Always Included Shaders nelle impostazioni grafiche. Da allora da noi la regola è: nuovo shader? Aggiungilo subito.


Il layer che era -1. Categoria simile: avevamo risolto un layer di fisica nel codice tramite il suo nome. Nell'editor: funziona. Nella build batch sul server di build: il layer non esiste, la ricerca restituisce -1 e tutto ciò che si basa su quel layer si comporta male in silenzio. Da allora referenziamo i layer tramite il loro indice fisso, non per nome.


La morale: l'editor di Unity e la build finita sono due mondi diversi. L'editor è clemente: ha a portata di mano tutti gli asset, tutti i nomi, tutti gli shader. La build è spietata. Per questo da noi ogni modifica al client si accompagna a un vero test di build in locale, non solo al pulsante Play nell'editor. Ci vuole più tempo. Ma ci ha comunque risparmiato molti rilasci imbarazzanti.

Post recenti

Mostra tutti

Commenti


Non puoi più commentare questo post. Contatta il proprietario del sito per avere più informazioni.
bottom of page