Добрый день. Подскажите, пожалуйста, как можно сделать перевод фразы "Last hightscore: "? Перевод обычного текста у меня получилось сделать. Если тут делать так же, то очки уже не отображаются, просто слово "Рекорд" на разных языках (в зависимости от выбранного) без очков.
Вот код скрипта на рекорд:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Record : MonoBehaviour
{
public Text Records;
private Text comp;
void Start()
{
comp = GetComponent<Text>();
comp.text = PlayerPrefs.GetInt("Record").ToString();
Records.text = "Last hightscore: " + comp.text;
}
}
Перевод обычного текста сделал двумя скриптами. Первый:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Translator : MonoBehaviour
{
private static int LaungageID;
private static List<Transletable_text> listId = new List<Transletable_text>();
#region ВЕСЬ ТЕКСТ [двухмерный массив]
private static string[,] LineText =
{
#region АНГЛИЙСКИЙ
{
"Start", // 0 - Старт
"Options", // 1 - Опции
"Exit", // 2 - Выход
"Last Hightscore", // 3 - Рекорд
"Back", // 4 - Назад
"Change language", // 5 - Выбор языка
"Select a spaceship", // 6 - Выбор корабля
"Restart", // 7 - Рестарт
"Menu", // 8 - Меню
"Score" // 9 - Счет
},
#endregion
#region РУССКИЙ
{
"Старт",
"Настройки",
"Выход",
"Прошлый рекорд",
"Назад",
"Выбор языка",
"Выбор корабля",
"Рестарт",
"Меню",
"Счет"
},
#endregion
#region НЕМЕЦКИЙ
{
"Start", // 0 - Старт
"Optionen", // 1 - Опции
"Ausstieg", // 2 - Выход
"Vergangene aufzeichnung", // 3 - Рекорд
"Zurück", // 4 - Назад
"Sprachauswahl", // 5 - Выбор языка
"Raumschiff auswählen", // 6 - Выбор корабля
"Neu starten", // 7 - Рестарт
"Speisekarte", // 8 - Меню
"Ergebnis" // 9 - Счет
},
#endregion
};
#endregion
static public void Select_laungage(int id)
{
LaungageID = id;
Update_texts();
}
static public string Get_text(int textKey)
{
return LineText[LaungageID, textKey];
}
static public void Add(Transletable_text idtext)
{
listId.Add(idtext);
}
static public void Delete(Transletable_text idtext)
{
listId.Remove(idtext);
}
static public void Update_texts()
{
for (int i = 0; i < listId.Count; i++)
{
listId[i].UIText.text = LineText[LaungageID, listId[i].textID];
}
}
}
Второй (вешается на текст в юнити):
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Transletable_text : MonoBehaviour
{
public int textID;
[HideInInspector] public Text UIText;
private void Awake ()
{
UIText = GetComponent<Text>();
Translator.Add(this);
}
private void OnEnable()
{
Translator.Update_texts();
}
private void OnDestroy()
{
Translator.Delete(this);
}
}