c# - 被“子弹”击中时,Unity 3d 分数会逐渐增加
问题描述
我有一些代码应该计数,一次一个,一个敌人被“子弹”击中,然后那个敌人在碰撞时被摧毁。我的问题是,当我击中敌人时,分数会上升一个,每当我击中另一个敌人时,它不会增加到两个(它保持在一个)。
我的画布和文本组件正常工作,脚本附加到敌人身上。
int score=0;
int displayScore=0;
public Text scoreUI;
private void OnCollisionEnter(Collision collision)
{
GameObject other = collision.gameObject;
switch (other.tag)
{
case "player":
break;
case "bullet":
displayScore++; //Increment the display score by 1
scoreUI.text = displayScore.ToString();
//Write it to the UI
Destroy(this.gameObject);
break;
}
}
解决方案
创建一个包含静态分数值的分数管理器。并将此脚本附加到另一个游戏对象(您不会破坏):
public class ScoreManager: MonoBehaviour {
public static int score;
private int displayScore;
public Text scoreUI;
void Start(){
score = 0;
displayScore = 0;
}
void Update(){
if(score != displayScore){
displayScore = score;
scoreUI.text = displayScore.ToString();
}
}
}
当您想提高分数时,只需通过以下方式调用它:
ScoreManager.score++;