实现从自定义角色场景跳转到游戏场景,Menu场景继续游戏跳转到游戏场景。

对于Menu场景继续游戏的情况,读取存档中的数据跳转场景即可。涉及存档数据,场景切换的逻辑还是统一由GameManager做。

	//UI类
    public void ContinueButtonClick()
    {
        Close();
        //使用当前存档进行游戏
        GameManager.Instance.UseCurrentArchiveAndEnterGame();
    }
	
	//GameManager类
    /// <summary>
    /// 使用存档,进入游戏
    /// </summary>
    public void UseCurrentArchiveAndEnterGame()
    {   
        //加载当前存档
        DataManager.LoadCurrentArchive();

        // 进入游戏场景
        SceneManager.LoadScene("Game");
    }

对于自定义角色场景的情况,我在跳转之前需要完善把自定义修改的角色数据保存到DataManager持有的角色数据dic中,再写入本地文件中(这样比较安全,虽然结束游戏的时候肯定会写入本地文件,防止数据丢失)

需要更新的角色数据由两部分:

  • 设置部位时更新部位类型数据
  • 设置颜色时更新颜色数据

alt 更新部位在UI类中的SetCharacterPart方法中加一行修改CustomPartDataDic即可。

alt

alt

更新颜色时之前已经做了保存数据的逻辑,实际会把Dic中的一项CustomCharacterPartData拿来修改,由于字典和类都是引用数据类型,字典中的数据也会同步更新,所以颜色更新不再需要完善。

alt

添加返回Menu和确认进入游戏场景的Button,在代码中添加对应的事件监听和触发逻辑即可。

	//UI类
	//Init方法中
    backButton.onClick.AddListener(BackButtonClick);
    sumbitButton.onClick.AddListener(SumbitButtonClick);

    private void BackButtonClick()
    {
        Close();
        //返回主菜单
        SceneManager.LoadScene("Menu");
    }

    private void SumbitButtonClick()
    {
        Close();
        //保存数据
        DataManager.SaveCustomCharacterData();
        //进入游戏场景
        SceneManager.LoadScene("Game");
    }
        

跳转效果,从自定义角色场景跳转至游戏场景,此时自定义的角色数据已经保存并写入本地。

alt