如何节省统一花费的最少时间?
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 usePlayerPrefs
- 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学习—项目统一异常处理机制详解与使用案例