Serializzare i Dictionary in Unity

Oggi ho completato le funzioni di salvataggio e caricamento dei dati in modo da poter editare e importare i dati reali attraverso un file json e senza dover quindi ricompilare l’eseguibile.

Mi son trovato con il problema di dover serializzare alcuni dictionary: C#/Unity non serializza direttamente questi tipi di dati e quindi ho adoperato questa soluzione.

Ho creato una classe contenente i due tipi di dati (chiave e valore) per ogni dizionario.

Esempio
[System.Serializable]
public class PartyIdPercentage
{
  public string partyId;
  public float percentage;

  public PartyIdPercentage(string partyId,float percentage){
    this.partyId = partyId;
    this.percentage = percentage;
  }
}

E quindi ho trattato il Dictionary come una List di questi oggetti sia nel salvataggio che nel caricamento.

A questo punto son riuscito a salvare in JSON tutta la struttura dei dati della nazione, compresi i riferimenti ai GameObject che compongono la mappa. Per ora il riferimento salvato è solo ad un GameObject pre-esistente nel gioco, ma non dovrebbe essere troppo difficile riuscire a ristrutturare il caricamento della mappa in modo da poter caricare i vari tasselli posizionandoli alle coordinate corrette. In questo modo potrebbe risultare semplice modificare la mappa.

Ho fatto qualche nuova modifica alla visualizzazione dei dati in modo da poter vedere le percentuali in un grafico selezionando una provincia, e ho caricato i nomi dei partiti italiani. Il prossimo passaggio sarà inserire i dati delle scorse elezioni e verificare che questi si vedano correttamente nel programma.