C# 每次玩家获得10分时,增加1枚钻石硬币

C# 每次玩家获得10分时,增加1枚钻石硬币,c#,unity3d,C#,Unity3d,现在我有一个方法,每次玩家得到10分,我的钻石点数都会增加。第9步,因为它从0开始。有没有一种方法可以使玩家每次得到10分,我可以将钻石硬币增加1?顺便说一句,分数是字符串,因为它不需要整数。我不知道您的确切情况,但我想这可以通过更干净的代码实现。那个长switch语句既不健壮,也非常低效 我认为这样做会更好。只要在您正常收集硬币时调用该函数即可。当然,你可以改变这一点,这只是基本的想法 switch(ScoreNumber.text) { case &q

现在我有一个方法,每次玩家得到10分,我的钻石点数都会增加。第9步,因为它从0开始。有没有一种方法可以使玩家每次得到10分,我可以将钻石硬币增加1?顺便说一句,分数是字符串,因为它不需要整数。

我不知道您的确切情况,但我想这可以通过更干净的代码实现。那个长switch语句既不健壮,也非常低效

我认为这样做会更好。只要在您正常收集硬币时调用该函数即可。当然,你可以改变这一点,这只是基本的想法

switch(ScoreNumber.text)
        {
            case "9":
                DiamondPointTrack++;
                DiamondPoints.text = DiamondPointTrack.ToString();
                break;

            case "19":
                DiamondPointTrack++;
                DiamondPoints.text = DiamondPointTrack.ToString();
                break;
            case "29":
                DiamondPointTrack++;
                DiamondPoints.text = DiamondPointTrack.ToString();
                break;
            case "39":
                DiamondPointTrack++;
                DiamondPoints.text = DiamondPointTrack.ToString();
                break;
            case "49":
                DiamondPointTrack++;
                DiamondPoints.text = DiamondPointTrack.ToString();
                break;
            case "59":
                DiamondPointTrack++;
                DiamondPoints.text = DiamondPointTrack.ToString();
                break;
            case "69":
                DiamondPointTrack++;
                DiamondPoints.text = DiamondPointTrack.ToString();
                break;
            case "79":
                DiamondPointTrack++;
                DiamondPoints.text = DiamondPointTrack.ToString();
                break;
            case "89":
                DiamondPointTrack++;
                DiamondPoints.text = DiamondPointTrack.ToString();
                break;
            case "99":
                DiamondPointTrack++;
                DiamondPoints.text = DiamondPointTrack.ToString();
                break;
            case "109":
                DiamondPointTrack++;
                DiamondPoints.text = DiamondPointTrack.ToString();
                break;
            case "118":
                DiamondPointTrack++;
                DiamondPoints.text = DiamondPointTrack.ToString();
                break;
            case "127":
                DiamondPointTrack++;
                DiamondPoints.text = DiamondPointTrack.ToString();
                break;


        }

希望您不是在每个更新帧都更新UI。在这种情况下,您会发现这样做很有帮助:

private int score = 0;

private int diamonds = 0;
private int diamondIncrementTracker = 0;

public void CollectCoin()
{
    score++;
    ScoreNumber.text = score.ToString();

    diamondIncrementTracker++;

    if(diamondIncrementTracker == 10)
    {
        diamonds++;
        diamondIncrementTracker = 0;
    }
}
这将允许您更新您的分数,例如分数+,并且您的UI文本元素将仅在分数值实际更改时更新。通过使用模运算,你只需要问分数可以除以10的多少倍。这似乎就是你想要的得分逻辑

private int _Diamonds = 0;
private int _Score = 0;
public int Score
{
    get => _Score;

    set
    {
        var v = value;
        if ( v != _Score )
        {
            // If the new value is different to the current score, we update the Score Text.
            _Score = v;
            ScoreNumber.text = _Score;

            // Now that we know the score has changed, let's see if the number of diamonds needs to be updated.
            v = _Score % 10;
            if ( v != _Diamonds )
            {
                _Diamonds = v;
                DiamondPoints.text = _Diamonds;
            }
        }
    }
}