Skip to content Skip to sidebar Skip to footer

Ottenere il nome della tabella e la chiave di un componente LocalizeStringEvent e cambiarne la referenza in Unity

Il Localization Package di Unity è sicuramente un componente molto valido per implementare logiche di multi-linguaggio all’interno di applicazioni e videogiochi. Se da un lato l’interfaccia permette di gestire facilmente tabelle, chiavi e contenuti, dall’altro potrebbe sorgere la necessitò di gestire i componenti a livello di script.

Una delle prime necessità che potrebbero sorgere è quella di prelevare il nome della tabella e il nome della chiave associati ad un componente LocalizeStringEvent a sua volta associato ad un campo testo e associare una nuova chiave. Per farlo bastano poche righe:

LocalizeStringEvent localize = GetComponent<LocalizeStringEvent>();
var tableEntry = LocalizationSettings.StringDatabase.GetTableEntry(localize.StringReference.TableReference, localize.StringReference.TableEntryReference);

string tableName = localize.StringReference.TableReference;
var keyName = tableEntry.Entry.SharedEntry.Key;

localize.StringReference.SetReference(tableName, keyName + "_2");

Come si vede dal codice purtroppo il nome della chiave non può essere prelavato tramite localize.StringReference.TableEntryReference come si potrebbe pensare (risulterebbe null o vuoto) ma è necessario scomodare l’oggetto .StringDatabase ed interrogarlo passando le referenze.

A quel punto la funzione StringReference.SetReference(…) permette facilmente di sostituire un tabella e chiave di un LocalizationStringEvent e aggiornarne immediatamente il contenuto senza chiamare esplicitamente la funzione StringReference.RefreshString().

Leave a comment