如何节省统一花费的最少时间?

Posted

技术标签:

【中文标题】如何节省统一花费的最少时间?【英文标题】:How to save the minimum time taken in unity? 【发布时间】:2020-06-02 07:00:09 【问题描述】:

我正在 Unity 3d 中制作迷宫游戏,其中完成关卡所需的最少时间是最高分。有没有办法使用 Playerprefs 保存高分?脚本是在 C# 中完成的。

【问题讨论】:

因此,将您的问题简化为基本问题:Saving/loading data in Unity 或 How to use PlayerPrefs - Official tutorial video 【参考方案1】:

您可以使用 Get/Set Assessors 使其更轻松。

public class GameManager: MonoBehavior 
    ...
    public float HighScore 
        get 
            return PlayerPrefs.GetFloat("HIGHSCORE", 0);
        
        set 
            if(value > HighScore) 
                PlayerPrefs.SetFloat("HIGHSCORE", value);
            
        
    
    ...
    public void GameOver() 
        HighScore = currentScore;
    

【讨论】:

【参考方案2】:

您可以先将此检查放入您的 homescript in awake 函数

   if(!PlayerPrefs.HasKey("HighestScore"))
        
            PlayerPrefs.SetString("HighestScore", "keep some big number");
        

或者或者可以使用(最好)

if(!PlayerPrefs.HasKey("HighestScore"))
            
                PlayerPrefs.SetFloat("HighestScore", 100000f);
            

然后当特定级别结束并且您需要保存分数时 将现有 PlayerPref 与当前 Player 得分进行比较。

例如浮动

if(PlayerPrefs.GetFloat("HighestScore")>=current_score)

PlayerPrefs.SetFloat("HighestScore",current_score);

希望这会有所帮助!

【讨论】:

【参考方案3】:

谢谢我的答案!只需要检查第一轮是否已经进行。

// Start is called before the first frame update
void Start()




    HighScore = score;



    WinScore.text = PlayerPrefs.GetFloat("HighScore").ToString();





// Update is called once per frame
void Update()

    if(PlayerPrefs.GetFloat("HighScore") == 0f)
    

        PlayerPrefs.SetFloat("HighScore", (float)HighScore);
        WinScore.text = HighScore.ToString();


    

    if (HighScore < PlayerPrefs.GetFloat("HighScore")) 

        PlayerPrefs.SetFloat("HighScoreEasy", (float)HighScore);
        WinScore.text = HighScore.ToString();


    


【讨论】:

以上是关于如何节省统一花费的最少时间?的主要内容,如果未能解决你的问题,请参考以下文章

微服务-十二要素

CUDA 统一内存情况下的 DeviceToHost 和 HostToDevice 时间

Spring MVC学习—项目统一异常处理机制详解与使用案例

统一返回结果集

SpringBoot RESTful API返回统一数据格式还不懂?

MySQL