unity 显示最高 10 分

Posted

技术标签:

【中文标题】unity 显示最高 10 分【英文标题】:Unity Display Highest 10 Scores 【发布时间】:2020-09-18 18:12:05 【问题描述】:

我正在尝试像记分牌一样制作,但只针对单个玩家。我想将我最好的 10 个分数保存到板上并将其显示到 MainMenu。到目前为止,我知道如何只保存和显示一个结果。代码如下:

[SerializeField] private int score;
 
 void Update()
 
  if (score > PlayerPrefs.GetInt("highestScore"))
         
             PlayerPrefs.SetInt("highestScore", score);
         
 

我在 MainMenu 场景中显示如下

void Start()
 
     highScore.text = PlayerPrefs.GetInt("highestScore").ToString();
 

能否帮我保存我最近的 10 个最好成绩并显示出来?我找不到任何关于如何做到这一点的教程。我想我应该是 Ints 数组并循环遍历该数组,然后将其保存到 PlayerPrefs 但我不知道该怎么做。希望您能帮助我并提前感谢您!

【问题讨论】:

【参考方案1】:

您可以使用 ArrayPrefs2 存储为数组 (http://wiki.unity3d.com/index.php/ArrayPrefs2),然后使用以下命令更新:

static void UpdateHighScores(int newScore)
 
  var highScores = PlayerPrefsX.GetIntArray("highScores");
  if (newScore > highScores[0]) 
    highScores[0] = newScore;
    Array.Sort(highScores);
    PlayerPrefsX.SetIntArray("highScores", highScores);
  

在其他地方初始化 PlayerPrefs 键 "highScores" 后:

PlayerPrefsX.SetIntArray("highScores", new Array[10]);

请注意,这会首先生成一个具有最低高分的数组,最后才是真正的最高分。

【讨论】:

我也会评论 Hamza Abbas 的回答,但我还没有任何声誉。他们忘记在 if 语句的末尾添加 break; 嘿,谢谢你指出这个错误,我没有尝试运行代码,而是假设它会如何工作来编写它,谢谢。 还有一个错误,forloop 条件是检查 X 是否小于 I,所以如果 I = 3 并且 X 从 5 开始(X 没问题。我认为您还需要将"highScore_"x-1 更改为"highScore_"+(x-1)。虽然如果 OP 让您的代码运行,他们一定已经注意到了。 lmao,编辑了答案,我还有什么遗漏吗? XD【参考方案2】:

你绝对可以节省更多的钥匙, 播放器首选项 接受参数一个是键,第二个是值 你可以像这样设置它

PlayerPrefs.SetInt("highScore_1", value);
PlayerPrefs.SetInt("highScore_2", value);
PlayerPrefs.SetInt("highScore_3", value);
PlayerPrefs.SetInt("highScore_4", value);
PlayerPrefs.SetInt("highScore_5", value);

所以当有人得分超过前一个最高分时,你会做的是

int newScore = 50;
for(int i=1; i <= 5; i++)
    if(newScore > PlayerPrefs.GetInt("highScore_"+i))
        for(int x = 5; x > i; x--)
            int value = PlayerPrefs.GetInt("highScore_"+(x-1));
            PlayerPrefs.setInt("highScore_"+x, value);
        
        break;
    

让我知道它是否有效。

【讨论】:

您好,谢谢您的回答!不幸的是,它似乎没有工作,或者我在尝试实现它时做错了。当我如上所述设置 PlayerPrefs 时,它将最高分返回到所有 5 个文本字段。 嘿,你介意再试一次吗,我已经对代码进行了更正。

以上是关于unity 显示最高 10 分的主要内容,如果未能解决你的问题,请参考以下文章

显示当前分与历史最高分数

Unity后处理PostProcessEffectRenderer在编辑器中显示,但不在构建中显示

UNITY把3D模型显示在UI层级上的思路

Unity 关于特效和UI显示的优先级问题

unity 之 场景切换进度条显示

mac 10 unity4.7编辑器中所有文件不显示