Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите решить проблему в Unity

Тимофей Адаменко Ученик (98), на голосовании 4 месяца назад
Делаю простенькую игру, но числа там очень большие, проблема в том, что числа начинают багаться от 10 млн, текст начинает показывать числа, округляя их. Можно как-то сделать, чтобы вместо гигансткого числа вроде 1100000 показывало 1.1М?
Голосование за лучший ответ
Летучий Голландец Ученик (142) 5 месяцев назад
В Unity можно достичь того же эффекта с помощью C# кода. Вот как можно реализовать функцию для форматирования больших чисел в удобочитаемом формате, например, чтобы число 1100000 отображалось как "1.1M":
using UnityEngine;
using UnityEngine.UI;

public class NumberFormatter : MonoBehaviour
{
public Text numberText; // ссылка на текстовый элемент, куда будет выводиться отформатированное число

// Функция для форматирования больших чисел
public string FormatLargeNumber(float num)
{
string suffix = "";
if (Mathf.Abs(num) >= 1000f)
{
num /= 1000f;
suffix = "K";
}
if (Mathf.Abs(num) >= 1000f)
{
num /= 1000f;
suffix = "M";
}
if (Mathf.Abs(num) >= 1000f)
{
num /= 1000f;
suffix = "B";
}

// Округляем до одного знака после запятой
string formattedNumber = num.ToString("F1") + suffix;
return formattedNumber;
}

void Start()
{
float number = 1100000f;
string formattedNumber = FormatLargeNumber(number);
numberText.text = formattedNumber; // устанавливаем отформатированное число в текстовом элементе
}
}
Как это работает:
FormatLargeNumber(float num): Это метод, который принимает число типа float и возвращает его строковое представление в удобочитаемом формате с добавлением суффикса (K, M, B в зависимости от порядка числа).

Start(): В методе Start() происходит пример использования функции FormatLargeNumber. Здесь число 1100000 передается функции FormatLargeNumber, результат форматирования сохраняется в переменной formattedNumber, которая затем устанавливается в numberText.text. numberText должен быть ссылкой на текстовый элемент интерфейса в Unity (например, через public Text numberText; в скрипте или через поиск GetComponent<Text>()).

Округление: Для округления числа до одного знака после запятой используется форматирование строки с использованием "F1".

Этот код можно доработать или адаптировать в зависимости от конкретных требований вашей игры в Unity.
Похожие вопросы