点钞机漏洞 Unity

Money Counting Bug Unity

我在 Unity 上使用 c# 脚本计算金钱并在需要时在其后添加后缀。由于一些不明原因,它停在 2.1B,切换到 -2.1B,然后直到 0.0T 才改变,这也不会改变值,每个后缀都是这样。这是我的代码:

    void Update(){
{
    pointIncreasedPerSecond = 10.0f * k;
    scoreAmount += pointIncreasedPerSecond * Time.deltaTime;
    if(scoreAmount < 999f){
    scoreTime.text =  "$ " + (int)scoreAmount;
    }
    if(scoreAmount > 999f && scoreAmount < 999999f){
        scoreTime.text = "$" + ((int)scoreAmount / 1000f).ToString("F1") + "K";
    }
    if(scoreAmount > 999999f && scoreAmount < 999999999f){
        scoreTime.text = "$" + ((int)scoreAmount / 1000000f).ToString("F1") + "M";
    }
    if(scoreAmount > 999999999f && scoreAmount < 999999999999f){
        scoreTime.text = "$" + ((int)scoreAmount / 1000000000f).ToString("F1") + "B";
    }
    if(scoreAmount > 999999999999f && scoreAmount < 999999999999999f){
        scoreTime.text = "$" + ((int)scoreAmount / 1000000000000f).ToString("F1") + "T";
    }
    if(scoreAmount > 999999999999999f && scoreAmount < 999999999999999999f){
        scoreTime.text = "$" + ((int)scoreAmount / 1000000000000000f).ToString("F1") + "Qd";
    }
    if(scoreAmount > 999999999999999999f && scoreAmount < 999999999999999999999f){
        scoreTime.text = "$" + ((int)scoreAmount / 1000000000000000000f).ToString("F1") + "Qn";
    }
    if(scoreAmount > 999999999999999999999f && scoreAmount < 999999999999999999999999f){
        scoreTime.text = "$" + ((int)scoreAmount / 1000000000000000000000f).ToString("F1") + "Sx";
    }
    if(scoreAmount > 999999999999999999999999f && scoreAmount < 999999999999999999999999999f){
        scoreTime.text = "$" + ((int)scoreAmount / 1000000000000000000000000f).ToString("F1") + "Sp";
    }
    if(scoreAmount > 999999999999999999999999999f && scoreAmount < 999999999999999999999999999999f){
        scoreTime.text = "$" + ((int)scoreAmount / 1000000000000000000000000000f).ToString("F1") + "O";
    }
    if(scoreAmount > 999999999999999999999999999999f && scoreAmount < 999999999999999999999999999999999f){
        scoreTime.text = "$" + ((int)scoreAmount / 1000000000000000000000000000000f).ToString("F1") + "N";
    }
    if(scoreAmount > 999999999999999999999999999999999f && scoreAmount < 999999999999999999999999999999999999f){
        scoreTime.text = "$" + ((int)scoreAmount / 1000000000000000000000000000000000f).ToString("F1") + "D";
    }
    if(scoreAmount > 99999999999999999999999999999999999f && scoreAmount < 99999999999999999999999999999999999999f){
        scoreTime.text = "Trouve un taff";
    }
}   

你的分数可能是一个 Int32,它的范围是 2,147,483,647,所以大约 21 亿其他类型有更高的上限,比如浮点数或小数。如果你想保持整数,我建议使用 long ;如果你想要尽可能多的数字,我建议使用小数