使用PlayerPrefsX在Unity中获得高分逻辑

时间:2015-05-15 19:57:59

标签: unity3d

我在Unity中创建了一个相当基本的2D滚动游戏,其中一种游戏模式就是生存。当您死亡时,此屏幕将加载并允许您输入您的高分,一旦按下按钮,该高分将被保存到高分表中。

然而,虽然我可以取代得分高于,但我不能在我的生活中想到将替换的分数换成低于它的位置的逻辑,然后该分数将下降一,然后是下一个得分等。

我所处的阶段在下面,代码只是取代了当前商店删除的所有高分,因为它不是需要做的。我目前有五个通用分数保存到playerprefsX int数组,所以我知道以下所有代码都正常工作,它只是将所有分数下降一个并删除最终得分,这对我来说是个问题

public class high_score_input : Game_Over {
private string name = "highscores";
private int score;
public int[] highscores = new int[5];


// Use this for initialization
void Start () {
    GameObject levelcontroller = GameObject.Find ("levelcontroller");
    survival_mode survival = levelcontroller.GetComponent<survival_mode> ();
    score = survival.setScore();
    highscores = PlayerPrefsX.GetIntArray(name);}


void OnGUI()
{

    base.OnGUI ();
    if (GUI.Button (new Rect (Screen.width/10, 250, 120, 30), "Save High Score")) 
    {       


            for(int i = 0;i<highscores.Length;i++)
            {
                if(score>highscores[i])
                {
                    }
                }


        PlayerPrefsX.SetIntArray(name, highscores);
    }

}

1 个答案:

答案 0 :(得分:0)

鉴于它是一个小阵列而且这不是性能关键代码,我会选择一些简单且避免错误的东西:

  • 确保您的得分数组已排序。
  • 新分数是否超过了最后一个分数的分数?如果是,请更换它。
  • 确保您的得分数组已排序。

给定辅助函数,例如Array.Sort,这应该很快。