我有一个游戏,每当你杀死一个僵尸,你就会得到一分。它有效,但出于某种原因,有时当我杀死一个僵尸时,分数会随机下降,即使我从未对其进行编码以使分数可能下降。这是计算分数的碰撞脚本。我愿意回答你们的任何问题。谢谢!
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class CollisionScript : MonoBehaviour
{
private int killCount;
public Text scoreCount;
private void OnCollisionEnter2D(Collision2D other)
{
if (other.gameObject.CompareTag("zombie"))
{
Destroy(other.gameObject);
killCount += 1;
scoreCount.text = "Kill Count: " + killCount.ToString();
}
}
}
我试图查看分数下降是否有任何特定模式,但它似乎完全是随机的。
当前代码不会减少计数器。正如@jdweng 评论的那样,您可能会看到此调用的不同实例的输出。
我建议进行一些临时更改以进行调试。这个想法是给
CollisionScript
的每个实例一个唯一的数字。
public class CollisionScript : MonoBehaviour
{
private static _globalCounter; // <===
private _number; // <===
private int killCount;
public Text scoreCount;
public CollisionScript() // <===
{
_number= ++_globalCounter; // <===
}
private void OnCollisionEnter2D(Collision2D other)
{
if (other.gameObject.CompareTag("zombie"))
{
Destroy(other.gameObject);
killCount += 1;
scoreCount.text = $"#{_number}: Kill Count: {killCount}"; // <===
}
}
}
请注意,Unity 确实比您预期的更频繁地调用构造,所以不要担心遗漏数字。