如何优化Unity中各关卡最佳时间保存的重复代码?
代码优化方案
你的这段代码确实存在大量重复逻辑,完全可以通过动态生成键名的方式简化,根本不需要写多个if判断,甚至连循环都不用(如果只是针对当前关卡的话)。
优化后的代码如下:
int currentLevel = level.CurrentLevel; // 先校验关卡编号是否在有效范围内,避免非法值 if (currentLevel >= 1 && currentLevel <= 5) { string saveKey = $"Level{currentLevel}"; float savedBestTime = PlayerPrefs.GetFloat(saveKey); if (savedBestTime < timer.TimeLeft) { PlayerPrefs.SetFloat(saveKey, timer.TimeLeft); } }
优化思路:
- 用当前关卡号
currentLevel拼接出对应的存储键名LevelX,替代硬编码的Level1到Level5,彻底消除重复代码 - 增加关卡编号的合法性校验,防止非法值导致的错误
- 后续如果新增关卡,只需要调整校验的上限(比如把
<=5改成<=10),不用再复制粘贴重复的if块
如果之后需要批量处理所有关卡的时间(比如初始化或批量更新),也可以用循环实现:
// 遍历1到5关卡批量处理 for (int levelNum = 1; levelNum <= 5; levelNum++) { string saveKey = $"Level{levelNum}"; float savedBestTime = PlayerPrefs.GetFloat(saveKey); // 这里替换成对应关卡的时间值,比如从数组或配置中获取 float currentLevelTime = GetLevelTime(levelNum); if (savedBestTime < currentLevelTime) { PlayerPrefs.SetFloat(saveKey, currentLevelTime); } }
内容的提问来源于stack exchange,提问作者Queiroz
相关产品推荐
相关产品推荐

