Unity点击器游戏CurrencyConverter脚本CS0201错误及代码问题求助
解决你的CurrencyConverter代码中的两处错误
嘿,我来帮你搞定这两个代码问题,都是新手容易踩的小坑,别担心~
第一个错误:赋值运算符用成了比较运算符
你在第19行写的 instance == this; 是比较运算符(==),它的作用是判断两个对象是否相等,但这里你需要把当前脚本实例赋值给静态变量 instance,所以应该用赋值运算符(=):
instance = this;
报错 Error CS0201 就是因为单独的比较表达式不能作为一个独立语句存在——编译器完全摸不着头脑你要做什么,改成赋值就解决这个问题啦。
第二个错误:方法缺少返回值+字符串格式化逻辑错误
你的 GetCurrencyIntoString 方法声明了要返回 string 类型,但整个方法结束时没有任何 return 语句,这会导致编译失败。另外在else分支里的代码 converted = ("f0") + "" + valueToConvert; 完全不对,你想把数值格式化为整数,应该用 ToString("f0") 来实现格式化。
修正后的这部分代码应该是这样:
public string GetCurrencyIntoString(float valueToConvert) { string converted; if (valueToConvert >= 1000000) { converted = (valueToConvert / 1000f).ToString("f3") + " Mil"; } else if (valueToConvert >= 1000) { converted = (valueToConvert / 1000f).ToString("f3") + " K"; } else { converted = valueToConvert.ToString("f0"); // 正确格式化整数 } return converted; // 必须返回格式化后的字符串 }
完整修正后的代码
using System.Collections; using UnityEngine; public class CurrencyConverter : MonoBehaviour { private static CurrencyConverter instance; public static CurrencyConverter Instance { get { return instance; } } void Awake() { CreateInstance (); } void CreateInstance () { if (instance == null) { instance = this; // 修正赋值运算符 } } public string GetCurrencyIntoString(float valueToConvert) { string converted; if (valueToConvert >= 1000000) { converted = (valueToConvert / 1000f).ToString("f3") + " Mil"; } else if (valueToConvert >= 1000) { converted = (valueToConvert / 1000f).ToString("f3") + " K"; } else { converted = valueToConvert.ToString("f0"); // 修正格式化逻辑 } return converted; // 添加返回语句 } }
内容的提问来源于stack exchange,提问作者Jan Sander
相关产品推荐
相关产品推荐

