赞
踩
private void SaveObjectToJson()
{
save.scene = GameManager.getSceneIndex();
save.posX = GameManager.instance.player.transform.position.x;
save.posY = GameManager.instance.player.transform.position.y;
Debug.Log(save.posX); Debug.Log(save.posY);
File.WriteAllText(Application.dataPath + "/Json/sl.json", JsonMapper.ToJson(save));
}
private string LoadJsonFromFile()
{
return File.ReadAllText(Application.dataPath + "/Json/sl.json");
}
主界面
- Start (由Canvas中的MainMenu脚本控制,点击后buildIndex+1) - Load(由GameManager物体(在Hierarchy窗口创建的,里面搭载了GameManager和DataManager脚本)控制,点击后调用DataManager,点击后获取已保存的json文件,转化为自定义类(本篇为SL),后将SL中的数据赋值给GameManager中对应的数据,并最后进行LoadScene) public void LoadGame()
{
load = JsonMapper.ToObject<SL>(LoadJsonFromFile());
GameManager.instance.scene = load.scene;
GameManager.instance.pos = new Vector3((float)load.posX, (float)load.posY, 0f);
GameManager.changeScene(load);
}
暂停界面
public void SaveGame()
{
SaveObjectToJson();
}
private void SaveObjectToJson()
{
save.scene = GameManager.getSceneIndex();
save.posX = GameManager.instance.player.transform.position.x;
save.posY = GameManager.instance.player.transform.position.y;
Debug.Log(save.posX); Debug.Log(save.posY);
File.WriteAllText(Application.dataPath + "/Json/sl.json", JsonMapper.ToJson(save));
}
注意
这几个代码写的不太好,太繁杂,还能优化,大佬们一笑带过就行。
1.代码太杂了,从上面也能看到脚本一堆,我自己实际做的时候也看花了,后续还要看看能不能在整合简化一下。
2.Button下的On Click拖入的最好是为预制体的带脚本的物体,因为这样不用每次加载界面都进行实例化,比如说我在主菜单的button为Hierarchy中的带GameManager的物体,在主菜单加载到场景1后又返回菜单后,主菜单的Button的On Click就为Missing状态。(发现这个问题还是不规范导致的233,我在场景1的On Click放入了为预制体的物体,后来突然想起来这一点,上文所说的问题也就解决了)
3.角色GameObject问题。第一次写脚本时出现一个问题,我将角色实例化放在LoadScene之后,Debug出来GameObject无论如何都是null,最后改了好久没改掉就重写了。重写后我是在PlayerController中在Start中将本身的GameObject赋值给GameManager,这样在加载进入场景1后就可以实例化GameManager中的GameObject,并在GameObject的Update中将角色的实时position传给GameObject中的pos(好家伙,我这是怎么想的,写完就把改了),要保存时赋值就行。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。