Как решить ошибку FormatException: Input string was not in a correct format. unity?

FormatException: Input string was not in a correct format.
System.Number.StringToNumber (System.String str, System.Globalization.NumberStyles options, System.Number+NumberBuffer& number, System.Globalization.NumberFormatInfo info, System.Boolean parseDecimal) (at <437ba245d8404784b9fbab9b439ac908>:0)
System.Number.ParseInt32 (System.String s, System.Globalization.NumberStyles style, System.Globalization.NumberFormatInfo info) (at <437ba245d8404784b9fbab9b439ac908>:0)
System.Int32.Parse (System.String s) (at <437ba245d8404784b9fbab9b439ac908>:0)
R_Main.Update () (at Assets/Random/R_Main.cs:24)


в чем ошибка вот скрипт:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class R_Main : MonoBehaviour
{

    public InputField inf_ot;
    public InputField inf_do;
    public Text otvet;
    public int str;
    public int str2;
    public int otv;

    public void Random()
    {
        str += str2 = otv;
    }

    // Update is called once per frame
    void Update()
    {
        str = int.Parse(inf_ot.text);
        str2= int.Parse(inf_do.text);
        otvet.text = "Число: " + otv.ToString();
    }
}
  • Вопрос задан
  • 5256 просмотров
Решения вопроса 2
freeExec
@freeExec
Участник OpenStreetMap
Подавать на вход int.Parse нормальное целое число.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
str = int.Parse(inf_ot.text);
str2= int.Parse(inf_do.text);

У вас в inf_ot и ind_do не числа.
Приведите пример текста, который хотите спарсить.

PS: Но вообще код какой-то дикий. Я советую вам отложить юнити на потом и пока учить чистый C#.
Замечания по коду

public void Random()
{
    str += str2 = otv; // Не будет работать, либо будет работать не так, как вам нужно.
}

R_Main - какое-то дикое сокращение, которое ничего не говорит о смысле скрипта. + В C# принято использовать PascalCase - никаких нижних чёрточек
inf_ot, inf_do - То же самое, но ещё и транслит "от" "до"
otvet - то же самое
int str, str1 - лишнее сокращение + обман читателя. str большинство людей расшифровывают, как string, но тут числа
otv - сокращение + транслит.
Ну и парсинг чисел в апдейте - это жирноватая операция.

PPS: вероятно, вам нужно это:

Валидация - сюда можно ввести код, который не позволит пользователю вводит не-числа:
https://docs.unity3d.com/ru/530/ScriptReference/UI...

Событие ввода - чтобы не проверять текст каждый кадр:
https://docs.unity3d.com/ru/530/ScriptReference/UI...

Не забывайте про документацию - в ней хорошо описаны самые нужные моменты.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы