[英]How to make a kills counter in Unity2D with C#?
我想制作一个杀戮计数器,但由于某种原因它不起作用。 这是我所做的,我创建了一个新的空 GameObject 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
中调用了这个 function:
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
组件,因为它是一颗子弹。
快速解决:
将新TAG
附加到您的GameManager
,例如“GameManager”,然后使用
kills_score = GameObject.FindWithTag("GameManager").GetComponent<Score>();
代替
kills_score = GetComponent<Score>();
要快速验证这一点,请public
您的分数变量,并在您的编辑器中查看参考设置是否正确。
此外,作为旁注,请尝试使用 lowerCamelCam 命名法维护您的变量,这意味着以小写字母开头。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.