Sistema di dialogo Unity2D - Nomi, Ritratti e Layout utilizzando Ink Tags
Indice
- Introduzione al sistema di visualizzazione e gestione dei nomi degli NPC
- Creare un sistema di dialogo in Unity con Ink
- Aggiungere tag alla dialogo per gestire i nomi, i ritratti e il layout
- Aggiungere un'animazione per i ritratti dei personaggi
- Creare diverse disposizioni grafiche per il pannello di dialogo
- Gestire il cambio di personaggio all'interno della dialogo
- Ripristinare i valori predefiniti quando si inizia una nuova dialogo
- Conclusioni
Introduzione
Ciao a tutti, mi chiamo Trever e in questo video vi mostrerò un modo semplice ma efficace per visualizzare e gestire i nomi degli NPC, i ritratti e i diversi layout all'interno di un sistema di dialogo creato in Unity e utilizzando Ink. Alla fine di questo video avremo creato un sistema in cui un ritratto e un nome possono essere facilmente modificati per ogni linea di dialogo, e sarà altrettanto facile cambiare anche il layout del pannello di dialogo.
Creare un sistema di dialogo in Unity con Ink
Prima di iniziare con il sistema di gestione dei nomi degli NPC, è necessario avere una base per il sistema di dialogo. Se non avete mai lavorato con Ink prima, vi consiglio di guardare il mio video precedente in cui spiego come creare un sistema di dialogo con scelte in Unity utilizzando Ink. In quel video creiamo un sistema di dialogo di base che useremo come punto di partenza per questo video.
Aggiungere tag alla dialogo per gestire i nomi, i ritratti e il layout
Una volta che il sistema di dialogo base è stato creato, possiamo iniziare ad aggiungere i tag alla dialogo per gestire i nomi degli NPC, i ritratti e il layout del pannello di dialogo. Utilizzeremo questi tag per aggiungere metadati a ogni linea di dialogo all'interno del nostro file Ink. Un buon modo per strutturare i tag è utilizzare coppie chiave-valore, in cui la chiave rappresenta un'azione da eseguire nel nostro codice C# per quella linea di dialogo e il valore rappresenta i dati da utilizzare per quell'azione.
Ad esempio, utilizzando il simbolo hashtag, possiamo creare un tag per impostare il nome del personaggio parlante. La chiave del tag sarà "speaker" e il valore sarà il nome del personaggio. Possiamo leggere questo tag in Unity come una stringa, quindi analizzarlo in coppia chiave-valore e impostare il nome da visualizzare nel pannello di dialogo.
Aggiungere un'animazione per i ritratti dei personaggi
Per gestire i ritratti dei personaggi all'interno del pannello di dialogo, creeremo delle animazioni utilizzando l'Animator di Unity. Creeremo una cartella "Animazioni" nel nostro progetto e al suo interno creeremo una sottocartella chiamata "Ritratti". All'interno di questa cartella, creeremo un file di controller di animazione chiamato "AnimatorRitratti".
Successivamente, creeremo diverse animazioni per i ritratti dei personaggi, come "neutro", "felice" e "triste". Ogni animazione corrisponderà al valore del tag utilizzato nel nostro file Ink per specificare quale ritratto mostrare. In questo caso, tutte le animazioni dei ritratti andranno all'interno dello stesso animator nel layer di base.
Creare diverse disposizioni grafiche per il pannello di dialogo
Per creare diverse disposizioni grafiche per il pannello di dialogo, creeremo una nuova cartella chiamata "Layouts" all'interno della cartella "Animazioni". All'interno di questa cartella, creeremo un file di controller di animazione chiamato "AnimatorLayouts".
Creeremo due animazioni chiamate "Destra" e "Sinistra" e le aggiungeremo al controller di animazione. Queste animazioni rappresenteranno le diverse disposizioni del pannello di dialogo, ad esempio con il ritratto a sinistra o a destra. In base al valore del tag utilizzato nel nostro file Ink, avvieremo l'animazione corrispondente per impostare la disposizione desiderata del pannello di dialogo.
Gestire il cambio di personaggio all'interno della dialogo
Per gestire il cambio di personaggio all'interno della dialogo, utilizzeremo uno script chiamato "DialogManager" che verrà chiamato quando iniziamo una nuova dialogo con un personaggio specifico. In questo script, gestiremo i tag Ink e le animazioni per i nomi degli NPC, i ritratti e il layout del pannello di dialogo.
Creeremo costanti per le chiavi dei tag che vogliamo gestire, come "speaker" per il nome dell'NPC che sta parlando, "portrait" per il ritratto da mostrare e "layout" per la disposizione grafica del pannello di dialogo.
All'interno del metodo "ContinueStory", che si occupa di passare a una nuova linea di dialogo, chiameremo un metodo chiamato "HandleTags" e passeremo l'elenco dei tag correnti. Questo ci fornirà una lista di stringhe contenente tutti i tag per la linea di dialogo corrente.
Dopodiché, creeremo un ciclo "foreach" per scorrere ogni tag uno alla volta. Per ogni tag, divideremo la stringa in chiave e valore utilizzando il simbolo dei due punti come separatore. Verificheremo che l'array risultante abbia una lunghezza di due e assegneremo il tag alla chiave corrispondente e al valore corrispondente.
Successivamente, creeremo uno statement "switch" per gestire ogni chiave dei tag. Aggiungeremo codice per gestire il valore del tag in base alla chiave, ad esempio impostare il nome da visualizzare nel pannello di dialogo, avviare l'animazione corrispondente per il ritratto o impostare la disposizione grafica del pannello di dialogo.
Ripristinare i valori predefiniti quando si inizia una nuova dialogo
Per evitare che le informazioni dei tag vengano propagate da una dialogo all'altra, è una buona pratica ripristinare i valori predefiniti quando iniziamo una nuova dialogo. Possiamo fare questo nel metodo "EnterDialogMode" dello script "DialogManager", che viene chiamato all'inizio di una nuova dialogo con un personaggio.
Aggiungeremo alcune righe di codice per reimpostare gli animatori dei ritratti e il testo del nome da visualizzare a valori predefiniti. In questo modo, i tag delle dialogo precedenti non si propagheranno tra le diverse dialogo e avremo sempre valori coerenti all'avvio di una nuova dialogo.
Conclusioni
In questo video abbiamo imparato a creare un sistema di visualizzazione e gestione dei nomi degli NPC, dei ritratti e dei layout all'interno di un sistema di dialogo creato in Unity utilizzando Ink. Abbiamo utilizzato i tag nelle dialogo per aggiungere metadati e li abbiamo gestiti tramite script C# e animazioni. Spero che questo video sia stato utile e vi abbia dato un'idea di come implementare un sistema di dialogo avanzato nei vostri giochi. Grazie per aver guardato e buon lavoro!
🎮 Risorse: