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
相关产品推荐
相关产品推荐

