@AlexGenesis

Что не так с Input Field-TMP в Unity?

Добрый день, есть следующая задача в Unty проекте, человек вводит математическое выражение в Input Field(TextMeshPro), пускай к примеру "5+2", после чего по нажатия кнопки выражение записывается в string переменную:
string func = Field_Function.GetComponent<TextMeshProUGUI>().text;

А затем значение переменной func используется следующим образом:
ExpressionEvaluator.Evaluate(func, out int res);
Debug.Log(res);
>>> 0

Но возвращаемое значение равно 0, что говорит о том что при подсчете возникла какая-то ошибка.
"If the expression can not be evaluated, the function returns false and the result value is set to zero."
(https://docs.unity3d.com/ScriptReference/Expressio...)

Но при этом, если я ввожу "5+2" в Evaluate непосредственно в редакторе кода, все работает правильно.
ExpressionEvaluator.Evaluate("5+2", out int res);
Debug.Log(res);
>>> 7

И еще добавлю что если я пытаюсь проверить и вывести переменную func в консоль, она выводится тоже корректно:
string func = Field_Function.GetComponent<TextMeshProUGUI>().text;
Debug.Log(func);
>>> 5+2


Буду благодарен, если кто-то розьяснит в чем тут дело.
  • Вопрос задан
  • 1440 просмотров
Решения вопроса 1
@Ezekiel4
Охотник на пиратов и сборщик монолитов
TextMeshProUGUI и есть текст, это не поле ввода. Поле ввода - это TMP_InputField. Попробуйте:

using TMPro;
using UnityEditor;
using UnityEngine;

public class Calc : MonoBehaviour {

	[SerializeField] private TMP_InputField m_inputField;
	[SerializeField] private TextMeshProUGUI m_text;

	public void OnCalculate() {
        ExpressionEvaluator.Evaluate(m_inputField.text, out int result);
        m_text.text = result.ToString();
	}
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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