说明
该DEMO适用于游戏的简单关卡切换,实现逻辑十分简单。实现方法仅供参考,主要做个人学习记录用,不喜勿喷!
基本逻辑
- 关卡激活采用的是切换Button的interactable属性。【true:激活状态,false:未激活状态】
- 主界面默认的关卡为未激活状态。通关后,则修改存储unlockLevelIndex值。
- 主界面通过获取unlockLevelIndex值,来激活对应的关卡数。
核心代码
Button[] selectBtnGroup;//管理关卡组
private int unlockLevelIndex; //获取当前当前已解锁的关卡
//PlayerPrefs为Unity自带的数据持久化,可做简单存储
unlockLevelIndex = PlayerPrefs.GetInt("unlockLevelIndex");
selectBtnGroup = new Button[transform.childCount];
//
for (int i = 0; i < transform.childCount; i++)
{
selectBtnGroup[i] = transform.GetChild(i).GetComponent<Button>();
}
//初始:除了关卡1,其余关卡为非激活状态
for (int i = 1; i < selectBtnGroup.Length; i++)
{
selectBtnGroup[i].interactable = false;
}
//获取当前已激活的关卡数,修改主界面对应的按钮为激活状态
for (int i = 0; i < unlockLevelIndex; i++)
{
selectBtnGroup[i].interactable = true;
}
界面图
拓展
- 通关该关卡后:使用PlayerPrefs.SetInt(),修改unlockLevelIndex的值。
- 切换关卡时:使用SceneManager.GetActiveScene().buildIndex获取当前Scene的index值,+1跳转至下个Scene