You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何优化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);
    }
}

优化思路:

  1. 用当前关卡号currentLevel拼接出对应的存储键名LevelX,替代硬编码的Level1到Level5,彻底消除重复代码
  2. 增加关卡编号的合法性校验,防止非法值导致的错误
  3. 后续如果新增关卡,只需要调整校验的上限(比如把<=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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 11:03:20