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

Unity运行时如何设置List大小 关卡星级解锁系统开发问题

实现方法

你定义List<LevelDatas>时传入的50只是List的初始容量,不是实际包含的元素数量,要完成大小初始化需要手动往List中填充对应数量的LevelDatas实例,示例代码如下:

void Start()
{
    // 你需要的关卡总数,可根据需求修改数值
    int totalLevelCount = 50;

    // 可选:如果不需要保留已有元素可以先清空列表
    level.levelIndex.Clear();

    for (int i = 0; i < totalLevelCount; i++)
    {
        LevelDatas newLevel = new LevelDatas();
        // 默认第一关(索引为0)解锁,其余关卡默认锁定
        newLevel.isUnlocked = i == 0;
        newLevel.starsAwarded = 0;
        level.levelIndex.Add(newLevel);
    }

    // 可选:如果你需要调整已有列表的大小,不想清空原有数据,用下面的代码
    /*
    int targetSize = 50;
    // 数量不足时补全元素
    while (level.levelIndex.Count < targetSize)
    {
        level.levelIndex.Add(new LevelDatas()
        {
            isUnlocked = level.levelIndex.Count == 0,
            starsAwarded = 0
        });
    }
    // 数量超出时删除末尾元素
    while (level.levelIndex.Count > targetSize)
    {
        level.levelIndex.RemoveAt(level.levelIndex.Count - 1);
    }
    */
}

补充说明

  • 如果你后续要从本地存档读取关卡进度,在初始化完成后覆盖对应levelIndex元素的isUnlocked和starsAwarded值即可
  • 如果需要保留Unity Inspector面板中配置的关卡默认值,可以加判断只在level.levelIndex.Count == 0时执行初始化逻辑。

内容的提问来源于stack exchange,提问作者Jency Jerson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:48:03