在玩游戏时,有时候会遇见需要保存玩家位置,这种游戏在做游戏和玩游戏时还是很常见的,那么我们是如何来保存玩家的位置,以做到让玩家下次加载时不会受到位置的丢失。下面是我在游戏中的解决方法。
1.先看下我做的简单测试环境。
2.上面有两个按钮,一个按钮是用来保存玩家的位置,另外的一个按钮是用来加载保存的位置。
3.处理save按钮事件和Load按钮事件,完成写Json和读Json。
using UnityEngine;
using System.Collections;
//在工程中引入dll后使用
using LitJson;
using System.IO;
public class JsonScript : MonoBehaviour
{
//建一个Position类
public class Position
{
public double PositionX { get; set; }
public double PositionY { get; set; }
public double PositionZ { get; set; }
}
//当玩家点击保存按钮时
public void SaveClick()
{
Position position = new Position();
position.PositionX = transform.position.x;
position.PositionY = transform.position.y;
position.PositionZ = transform.position.z;
JsonData posData = JsonMapper.ToJson(position);
string path = Application.dataPath + "/JsonPos.txt";
StreamWriter streamWriter = new StreamWriter(path);
streamWriter.Write(posData);
streamWriter.Close();
}
//当玩家点击加载按钮
public void LoadClick()
{
string path = Application.dataPath + "/JsonPos.txt";
StreamReader streamReader = new StreamReader(path);
string pos = streamReader.ReadLine();
Position Pos = JsonMapper.ToObject<Position>(pos);
transform.position = new Vector3((float)Pos.PositionX,(float)Pos.PositionY,(float)Pos.PositionZ);
streamReader.Close();
}
}