通过Float从InputField和Multiply获取数据? (统一/ C#)

时间:2018-01-07 05:16:42

标签: c# unity3d

我正在编写代码并遇到问题。我尝试做的是使用单位的InputField,然后使用该数字乘以现有的float。这是我到目前为止所得到的:

private float finePrice = 0.0001f;
public InputField enterValue;

public Text estimatedValue;

estimatedValue.text = string.Format ("{0}", finePrice * enterValue);

错误我得到了:

Operator `*' cannot be applied to operands of type `float' and `UnityEngine.UI.InputField'

在我的理解中,我不能将字符串(inputfield)乘以浮点数?我尝试将输入字段的内容类型更改为"十进制数字"但是我得到了同样的错误。谷歌搜索它,没有找到任何东西。请帮忙?我输了。

2 个答案:

答案 0 :(得分:3)

您需要使用text property获取SelectList的内容,然后将该内容转换为InputField,因为它是一个字符串:

float

注意我已使用private float finePrice = 0.0001f, valueEntered; public InputField enterValue; public Text estimatedValue; if(float.TryParse(enterValue.text, out valueEntered)) { estimatedValue.text = (finePrice * valueEntered).ToString(); } else { estimatedValue.text = "Please enter a float value"; } ,因此如果用户输入的值无法转换为float.TryParse,您只需获得float而不是例外你用false。另外,我已将您的float.Parse更改为string.Format - 在这种情况下使用ToString毫无意义。

答案 1 :(得分:2)

与提到的Zohar一样,InputField.textstring,您需要将其转换为float,然后再将其与其他float相乘。

我留下了自己的答案,因为我认为最好使用float.Parse进行转换并将CultureInfo.InvariantCulture.NumberFormat传递给第二个参数,因为您不知道用户的设备设置为何种文化

InputField值转换为float

float inputInFloatFormat = float.Parse(enterValue.text, CultureInfo.InvariantCulture.NumberFormat);

乘以float finePrice变量

float multiplyResult = inputInFloatFormat * finePrice;

在文本组件上显示结果(将multiplyResult转换为字符串)然后显示

estimatedValue.text = multiplyResult.ToString();