Unity实战篇:使用Protobuf实现游戏存读档的完整流程(二:具体项目实战)
读取数据脚本(如果是第一次进入游戏,就初始化数据)
public static class PlayerDataReader{/// /// 数据储存的路径(依据自己情况改变,前面的Application.datapath不能动,在Unity里面就是Assets目录)/// public static readonly string m_DataPath =Application.dataPath + "/PlayerDatas.data";/// /// 从文件加载到的数据类/// public static PlayerDatas m_PlayerDatas = new PlayerDatas();/// /// 从数据文件读取数据,并赋值给m_PlayerDatas类/// public static void ReadPlayerData(){if (!File.Exists(m_DataPath)){File.Create(m_DataPath).Dispose();m_PlayerDatas.PlayerDataInstance.Add(new OneOfPlayerDatas{Hello = 233});PlayerDataSaver.SavePlayerData();}using (Stream file = File.OpenRead(m_DataPath)){m_PlayerDatas = PlayerDatas.Parser.ParseFrom(file);}}}
保存数据文件
public static class PlayerDataSaver{public static void SavePlayerData(){using (Stream output = File.OpenWrite(PlayerDataReader.m_DataPath)){PlayerDataReader.m_PlayerDatas.WriteTo(output);}}}
在Unity的Start函数中,首次运行游戏
//读取PlayerDataReader.ReadPlayerData();//打印Debug.Log(PlayerDataReader.m_PlayerDatas.PlayerDataInstance[0].Hello);//修改PlayerDataReader.m_PlayerDatas.PlayerDataInstance[0].Hello= 188;//保存//PlayerDataSaver.SavePlayerData();//打印Debug.Log(PlayerDataReader.m_PlayerDatas.PlayerDataInstance[0].Hello);

第二次运行游戏,结果如我们所料,由于没有对数据进行保存,所以结果还是233,188

退出游戏,对Start中的函数做如下修改
//读取PlayerDataReader.ReadPlayerData();//打印Debug.Log(PlayerDataReader.m_PlayerDatas.PlayerDataInstance[0].Hello);//修改PlayerDataReader.m_PlayerDatas.PlayerDataInstance[0].Hello = 188;//保存PlayerDataSaver.SavePlayerData();//打印Debug.Log(PlayerDataReader.m_PlayerDatas.PlayerDataInstance[0].Hello);
运行两次,OK,教程结束

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
