请问怎样在Unity的无尽跑酷小游戏中添加分数?
我正在尝试做一个无尽跑酷的小游戏,当玩家撞到一个道具时,将分数加上1000。在我的游戏管理器中,我写了如下的代码:
private float currentScore = 0;
void Update(){
if(!isGameEnded){
currentScore = Time.timeSinceLevelLoad * 10f;
if(scoreBonus){
currentScore += 1000;
scoreText.SetText(currentScore.ToString("0"));
scoreBonus = false;
}
scoreText.SetText(currentScore.ToString("0"));
}
}
同时,我有一个 itemCollision 脚本,在其中我更新了我的 GameManager 的 scoreBonus 变量:
void OnCollisionEnter(Collision collisionInfo){
if(collisionInfo.collider.tag == "Player"){
FindObjectOfType<PlayerCollision>().ActivateInvicibility(invisibilityDuration);
FindObjectOfType<GameManager>().scoreBonus = true;
Destroy(gameObject);
}
}
问题是,当我撞到这个道具时,分数变化得非常快,我看到 +1000 出现了,但是很快又消失了。我已经尝试过记录下分数,一切似乎都很正常,它的值在log中会发生变化,但在我的分数文本中却不会改变。
共以下 1 个回答
这个问题就出在这一行。
currentScore = Time.timeSinceLevelLoad * 10f;
这会覆盖您对当前分数所做的任何更改,因为分数是计算的结果。
为了简单起见,您可以创建另一个变量来存储额外的分数,然后在显示时将两者相加。