Страница 1 из 1

Непонятные символы вместо русских букв.

СообщениеДобавлено: 14 июл 2018, 15:19
Volosnya
Нужно отгадать предмет по картинке. Рандомные квадраты забиваются символами от слова которые нужно отгадать , а остальные рандомно должны забиваться другими символами.
На скрине нужно собрать слово машина, и буквы для этого слова отображаются нормально, а вот остальные вместо русских символов непонятные кракозябры. Использовал таблицу ascii. Пробовал менять кодировку на utf 8 не помогло. Если использовать английские символы с 65 по 91 то они отображаются нормально.
Синтаксис:
Используется csharp
public class GameManager : MonoBehaviour {

    public Character[] AllCharacters;
    private static List<Character> unDoneLevel;

    private Character currentLevel;

    [HideInInspector]
    public Image characterImage;


    public List<GameObject> AllSymbols = new List<GameObject>();

    private void Start()
    {
        if(unDoneLevel == null || unDoneLevel.Count == 0)
        {
            unDoneLevel = AllCharacters.ToList<Character>();
        }

        SetLevel();
        Debug.Log(currentLevel.name);
    }

    void SetLevel()
    {
        int currLevel = 0;
        currentLevel = unDoneLevel[currLevel];

        characterImage.sprite = currentLevel.image;
        foreach (char ch in currentLevel.name.ToUpper().ToArray())
        {
            int rnd = Random.Range(0, AllSymbols.Count);

            while(AllSymbols[rnd].GetComponent<Text>().text != "-")
            {
                rnd = Random.Range(0, AllSymbols.Count);
            }

            AllSymbols[rnd].GetComponent<Text>().text = ch.ToString();
        }

        foreach (GameObject go in AllSymbols)
        {
            if (go.GetComponent<Text>().text == "-")
                go.GetComponent<Text>().text = ((char)Random.Range(192, 223)).ToString();
        }

        unDoneLevel.RemoveAt(currLevel);
    }


Изображение

Re: Непонятные символы вместо русских букв.

СообщениеДобавлено: 14 июл 2018, 15:50
1max1
На шарпе коды русских символов совершенно отличаются от плюсовых, так что вот это вот:
Синтаксис:
Используется csharp
go.GetComponent<Text>().text = ((char)Random.Range(192, 223)).ToString();

Нужно заменить на:
Синтаксис:
Используется csharp
go.GetComponent<Text>().text = ((char)Random.Range(1072, 1104)).ToString();


Ах этот шарп, всё не как у людей, даже char 2 байта весит :ymparty:

Re: Непонятные символы вместо русских букв.

СообщениеДобавлено: 14 июл 2018, 16:10
Woolf
Ах этот шарп, всё не как у людей, даже char 2 байта весит :ymparty:

Наверное, потому, что UTF ?

А, вообще, лучше просто создать табличку всех русских букв и выбирать из неё, а не напрямую из чарсета. В этом случае проще будет локализовать под любой язык, хоть под арабский.

Re: Непонятные символы вместо русских букв.

СообщениеДобавлено: 14 июл 2018, 16:22
1max1
Woolf писал(а):Наверное, потому, что UTF ?

Изображение