Unity3D——简单关卡切换

613 阅读1分钟

说明

该DEMO适用于游戏的简单关卡切换,实现逻辑十分简单。实现方法仅供参考,主要做个人学习记录用,不喜勿喷!

基本逻辑

  1. 关卡激活采用的是切换Button的interactable属性。【true:激活状态,false:未激活状态】
  2. 主界面默认的关卡为未激活状态。通关后,则修改存储unlockLevelIndex值。
  3. 主界面通过获取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;
        }

界面图

图片.png

拓展

  • 通关该关卡后:使用PlayerPrefs.SetInt(),修改unlockLevelIndex的值。
  • 切换关卡时:使用SceneManager.GetActiveScene().buildIndex获取当前Scene的index值,+1跳转至下个Scene