首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Unity C# Player首选高分不起作用

Unity C# Player首选高分不起作用
EN

Stack Overflow用户
提问于 2020-06-17 10:17:25
回答 1查看 195关注 0票数 0

我在安卓系统上使用PlayerPrefs in unity (C#)时遇到错误

它看起来并没有保存它

脚本1

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Scores : MonoBehaviour
{
    public static int highscore;
    public static int points;

    public void Start()
    {

    }

    public void Update()
    {
            highscore = PlayerPrefs.GetInt("highscore");
            PlayerPrefs.SetInt("highscore", highscore);
            PlayerPrefs.Save();
    }
}

脚本2(使用脚本的部分)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    void Update()
    {
        highscore = PlayerPrefs.GetInt("Highscore");


        if (points > highscore)
        {
            highscore = points;
            highscoretext.text = "Highscore: " + highscore;
            highscoretext2.text = "Highscore: " + highscore;
        }

我只是可以弄清楚当我得到一个高分,例如12,我死了,我回到主屏幕,然后回到游戏,当重新启动应用程序时,高分是游戏相同的

EN

回答 1

Stack Overflow用户

发布于 2020-06-17 11:03:22

当您现在设置最高分数时,您将获得当前的最高分数并将其存储在highscore变量中。然后使用highscore变量覆盖高分,有效地将高分设置为自身。您实际要做的是检查当前分数是否大于最高分数,如果是,则将最高分数设置为当前分数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
highscore = PlayerPrefs.GetInt("highscore");
if(score > highscore)
{
    PlayerPrefs.SetInt("highscore", score);
    PlayerPrefs.Save();
}

代码不能工作的另一个原因是,在脚本1中用小h拼写"highscore",而在脚本2中用大h拼写。

而且,每次更新都调用PlayerPrefs.GetInt是非常低效的。您应该将它们转换为仅在需要获取或设置高分数时才调用的函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62426656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文