Как сократить большие числа в Unity?

Никак не могу придумать, как сделать так, чтобы при достижении игроком 1000 очков, писало не 1000, а 1к и так же с миллионом: вместо 1.000.000 — 1М.


Ответы (1 шт):

Автор решения: aepot

Если в лоб, то как-то так.

private string ScoreToString(long score)
{
    string suffix = "";

    if (score > 1000)
    {
        score /= 1000;
        suffix = "к";
    }

    if (score > 1000)
    {
        score /= 1000;
        suffix = "М";
    }

    return $"{score}{suffix}";
}

Если избавиться от дубликатов в коде, то так

private readonly string[] _suffixes = new[] { "к", "М" };

private string ScoreToString(long score)
{
    int i = 0;
    string suffix = "";

    while (score > 1000 && i < _suffixes.Length)
    {
        score /= 1000;
        suffix = _suffixes[i];
        i++;
    }

    return $"{score}{suffix}";
}
→ Ссылка