如何用C#在Unity2D中制作kills计数器



我想制作一个kill计数器,但由于某种原因,它不起作用。这是我所做的我创建了一个新的空游戏对象Game Manager并添加了一个新组件Score,这是代码:

using UnityEngine;
using UnityEngine.UI;
public class Score : MonoBehaviour
{
public Text kills_UI;
private int Kills_Counts; //How many kills

public void Increase_score() //This will update the UI text to the current kills count 
{
Kills_Counts++;
kills_UI.text = Kills_Counts.ToString();
}
}

在他被杀后,我在敌人脚本BulletColision中调用了这个函数:

using UnityEngine;
public class BulletColision : MonoBehaviour
{
Score kills_score;
void Start()
{
kills_score = GetComponent<Score>();
}
public void OnCollisionEnter2D(Collision2D others) //When a bullet collide with en enemy prefab 
{
if (others.gameObject.CompareTag("Enemy"))
{
Destroy(gameObject); //Destroy the enemy
kills_score.Increase_score(); //Calling the function from 'GameManager'
Destroy(others.gameObject); //Destroy the bullet

}

}
}

问题在于您的kills_score引用,如果您这样做:

kills_score = GetComponent<Score>();

您正在BulletCollision上搜索Score组件,我想它没有Score组件,因为它是一个项目符号。

快速修复:

在你的CCD_ 8上附加一个新的类似CCD_;GameManager";,然后使用

kills_score = GameObject.FindWithTag("GameManager").GetComponent<Score>();

而不是

kills_score = GetComponent<Score>();

为了快速验证这一点,请将您的分数变量设为public,并在编辑器中查看参考设置是否正确。

此外,作为一个附带说明,请尝试使用lowerCamelCame命名法来维护您的变量,这意味着从小写开始

相关内容

  • 没有找到相关文章

最新更新