2015-05-15 20 views
0

我在Unity中创建了一个相当基本的二维滚动游戏,其中一种游戏模式是生存。当你死的时候,这个屏幕会加载并允许你输入你的高分,一旦按下按钮,高分将被保存到高分表中。Unity中使用PlayerPrefsX的高分逻辑

然而,虽然我可以取代它的分数高于,但我不能为我的生活想到将替代的分数放置在它下面的位置的逻辑,那么该分数将下降一个,然后下一个分数等

我在的阶段是在下面,用代码简单地取代所有低于当前商店删除的高分,因为它不是什么需要做的。我现在有保存到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); 
    } 

} 

回答

0

问题鉴于它是一个小阵列,这不是性能关键代码,我会去做一些简单的事情,并避免错误:

  • 确保你的得分数组是排序的。
  • 新的分数是否在最后一个分数中击败了分数?如果是这样,请更换它。
  • 确保您的分数数组已排序。

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

+0

那么这不仅会检查最后一个插槽中的分数吗? – user3617507

+0

是的,但这就是为什么那种类型。您只需检查新分数是否超过*最低*分数。第一类使操作更容易。第二类确保你的分数保持秩序。 – rutter

+0

啊是的,我想我明白你的意思 – user3617507