我正在尝试为我的游戏统一制作一个高分系统,并且不确定如何做到这一点,但是尽管如此,我还是尝试了这段代码,但我一直收到错误消息。
我已经尝试搜索这些错误,但是由于我对统一和编码尚不陌生,所以没有一种解决方案对我有意义。
public Transform player;
public Text scoreText;
public Text highScore;
// Update is called once per frame
void Update()
{
scoreText.text = player.position.z.ToString("0");
scoreText = scoreText.int.Parse;
if (scoreText > PlayerPrefs.GetInt("High Score", 0)) ;
{
PlayerPrefs.SetInt("High Score", scoreText);
highScore.text = scoreText.ToString;
}
这些是显示的错误消息
Assets \ Score.cs(15,31):错误CS1001:预期的标识符
Assets \ Score.cs(15,31):错误CS1002 :;预期的
答案 0 :(得分:1)
您目前无法使用。如果您能学习C#的基本语法来避免此类问题,那就太好了。
Text
是一个类,在这种情况下,scoreText
是Text
类的实例。您不能只是这样做:
scoreText = scoreText.int.Parse;
除非当然,scoreText.int.Parse
(虽然不起作用)会返回Text
。
我认为您想要做的是获取玩家的位置并将其转换为int,因此您可以使用PlayerPrefs
保存该值。
您可以简单地创建一个int变量。
private int _score;
然后这样使用:
_score=int.Parse(scoreText.text);
您可以使用PlayerPrefs
保存。
PlayerPrefs.SetInt("High Score", _score);
我希望这会有所帮助。
此行还存在错误:
highScore.text = scoreText.ToString;
应该是:
highScore.text = scoreText.ToString();
因为ToString()
是一种方法。
答案 1 :(得分:0)
在“ If”条件之后删除分号。
void Update()
{
scoreText.text = player.position.z.ToString("0");
// scoreText = scoreText.int.Parse;
if (scoreText > PlayerPrefs.GetInt("High Score", 0))
{
PlayerPrefs.SetInt("High Score", scoreText);
highScore.text = scoreText.ToString();
}
让我知道是否有帮助
答案 2 :(得分:0)
尝试以下代码:
public Transform player;
public Text scoreText;
public Text highScore;
// Update is called once per frame
void Update()
{
scoreText.text = player.position.z.ToString("0");
int scoreTextNumber = int.Parse(scoreText.text);
if (scoreText > PlayerPrefs.GetInt("High Score", 0))
{
PlayerPrefs.SetInt("High Score", scoreTextNumber);
highScore.text = scoreTextNumber.ToString("0");
}