我正在编写代码并遇到问题。我尝试做的是使用单位的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)乘以浮点数?我尝试将输入字段的内容类型更改为"十进制数字"但是我得到了同样的错误。谷歌搜索它,没有找到任何东西。请帮忙?我输了。
答案 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.text
是string
,您需要将其转换为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();