我的Unity分数一直在随机下降

问题描述 投票:0回答:1

我有一个游戏,每当你杀死一个僵尸,你就会得到一分。它有效,但出于某种原因,有时当我杀死一个僵尸时,分数会随机下降,即使我从未对其进行编码以使分数可能下降。这是计算分数的碰撞脚本。我愿意回答你们的任何问题。谢谢!

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();
        }
    }
}

我试图查看分数下降是否有任何特定模式,但它似乎完全是随机的。

c# unity3d
1个回答
0
投票

当前代码不会减少计数器。正如@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 确实比您预期的更频繁地调用构造,所以不要担心遗漏数字。

© www.soinside.com 2019 - 2024. All rights reserved.