实现从自定义角色场景跳转到游戏场景,Menu场景继续游戏跳转到游戏场景。
对于Menu场景继续游戏的情况,读取存档中的数据跳转场景即可。涉及存档数据,场景切换的逻辑还是统一由GameManager做。
//UI类
public void ContinueButtonClick()
{
Close();
//使用当前存档进行游戏
GameManager.Instance.UseCurrentArchiveAndEnterGame();
}
//GameManager类
/// <summary>
/// 使用存档,进入游戏
/// </summary>
public void UseCurrentArchiveAndEnterGame()
{
//加载当前存档
DataManager.LoadCurrentArchive();
// 进入游戏场景
SceneManager.LoadScene("Game");
}
对于自定义角色场景的情况,我在跳转之前需要完善把自定义修改的角色数据保存到DataManager持有的角色数据dic中,再写入本地文件中(这样比较安全,虽然结束游戏的时候肯定会写入本地文件,防止数据丢失)
需要更新的角色数据由两部分:
- 设置部位时更新部位类型数据
- 设置颜色时更新颜色数据
更新部位在UI类中的SetCharacterPart方法中加一行修改CustomPartDataDic即可。
更新颜色时之前已经做了保存数据的逻辑,实际会把Dic中的一项CustomCharacterPartData拿来修改,由于字典和类都是引用数据类型,字典中的数据也会同步更新,所以颜色更新不再需要完善。
添加返回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");
}
跳转效果,从自定义角色场景跳转至游戏场景,此时自定义的角色数据已经保存并写入本地。