PlayerPrefs关卡解锁按钮交互异常及索引逻辑疑惑
问题解析
核心原因是你混淆了自定义的关卡编号和Unity的Build Index:
Unity的Build Index是从0开始计数的,你在Build Settings里标注的场景顺序对应实际索引是:
- 1.启动界面 → Build Index为0
- 2.关卡选择界面 → Build Index为1
- 3.关卡1 → Build Index为2
你的按钮数组第一个元素对应“关卡1”,这里的“关卡1”是你自定义的关卡编号(比如第1关),而非Build Index。解锁判断应该基于自定义关卡编号,而非场景索引:
- 按钮数组索引
i对应的自定义关卡编号是i+1(索引0对应关卡1,索引1对应关卡2,以此类推) - 默认解锁关卡1,只需把记录已解锁最高关卡的变量设为
1(自定义编号),而不是关卡1的Build Index2
- 按钮数组索引
你之前的错误逻辑:
- 错误地将解锁阈值设为Build Index
2,同时用i+2关联按钮和关卡,导致第一个按钮(i=0)对应的值为2,如果判断逻辑是“超过阈值则不可交互”,就会出现不符合预期的结果。
- 错误地将解锁阈值设为Build Index
修改后的正确逻辑:
- 用
i+1对应自定义关卡编号,解锁阈值设为1,此时第一个按钮对应关卡1,等于阈值可正常交互;后续按钮对应关卡编号大于1时,自动设为不可交互,完全符合需求。
- 用
简单说:你不需要把Build Index直接套进关卡解锁的判断里,自定义的关卡编号(1、2、3...)和按钮数组索引的对应关系才是你应该关注的,Build Index只是场景加载时用的参数而已。
内容的提问来源于stack exchange,提问作者S. Mazii
相关产品推荐
相关产品推荐

