我有一些代码应该一次计算一次,一个敌人被“子弹”击中,然后该敌人在碰撞中被摧毁。我的问题是当我击中敌人时,得分上升一个,每当我碰到另一个敌人时,它就不会增加到两个(保持在一个)。
我的画布和文本组件正常工作,并且脚本已附加到敌人身上。
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;
}
}
答案 0 :(得分:2)
创建一个其中具有静态分数值的分数管理器。并将此脚本附加到另一个游戏对象(您不会销毁):
##### Activate conda env ######
[[ -n $CONDA_ENV ]] && conda activate $CONDA_ENV
当您想增加分数时,只需致电:
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();
}
}
}