子弹2秒后自动销毁用这个方法更简单一些
public class BulletManager : MonoBehaviour {
private void Start()
{
Destroy(this.gameObject,2);
}
}
子弹2秒后自动销毁用这个方法更简单一些
public class BulletManager : MonoBehaviour {
private void Start()
{
Destroy(this.gameObject,2);
}
}
private void SaveByJson()
{
//创建Save对象并保存当前游戏状态
SaveManager save = CreatSave();
//创建一个文件流
string FilePath = Application.dataPath + "/MyPro/Save" + "/ByJson.json";
//利用JsonMapper将save对象转换为Json格式的字符串
string SaveJsonStr = JsonMapper.ToJson(save);
//将转换好的json字符串写到json文件流中
//创建一个StreamWriter(可以看作用来保存json格式的文件流,上面的FilePath是普通的文件流路径),并将字符串写入文件中
StreamWriter sw = new StreamWriter(FilePath);
sw.Write(SaveJsonStr);
//关闭文件流
sw.Close();
UIScript._instance.ShowMessage("保存成功");
StartCoroutine("IsMessage");
}
Json :读取游戏
string filePath = Application.dataPath + "/StreamingFile" + "/byJson.json"
if(File.Exists(filePath)) //判断文件是否存在
{
//创建一个StreamReader,用来读取流 StreamReader sr = new StreamReader(filePath);
//将读取到的流赋值给jsonStr
string jsonStr = sr.ReadToEnd();
//关闭
sr.Cloes();
}
else
{
}
这节课代码可以简写成:
void Awake()
{
int index = PlayerPrefs.GetInt("musicOn", 1);
if (index==1)
{
musicToggle.isOn = true;
}
else
{
musicToggle.isOn = false;
}
MusicSwitch();
}
比老师的方法简单。
二进制方法
- 序列化(转换),反序列化(解析)
sml:扩展标记语言,可以标记,定义数据类型
json:可以使用它来跨平台的传输数据
給Target添加一個腳本
把void start和voidUpdate刪掉
public GameObject[]mosters;
public GameObject activateMonster = null;
把四種怪物都拖進腳本
ptivate void Start(){
foreach(GameObject monster in monsters)
{
monster.SetActivate(false);
monster.GetComponent<BoxCollider>.enabled = false;
}
ActivateMonster();
}
private void ActivateMonster()
{
int index = Range(0,monsters.Lenght);
activateMonster = monster[index];
activate.SetActive(true);
activate.GetCompoment<BoxCollider>().enabled = true;
}
获得怪物当前的位置
快捷键:R(大小)W(位置)
box collider物理碰撞(手动添加)
存档读档--3种方法
1 讲了一个关于json和XML的博客里边有详细的使用
2 大致演示了二进制、XML和Json的大结构。
鼠标的位置除以屏幕对应的长或宽信息得到枪的旋转角度,需要研究一下mathf
//序列划的过程(将sava对象转化成字节流过程)
//创建Save对象并保存游戏状态
Save save = CreatSaveGame();
//创建一个二进制的格式化的程序
BinaryFormatter bf = new BinaryFormatter();
//创建一个文件流
FileStream filestream = File.Create(Application.dataPath+"/StreamingFile"+"/Bin.txt");
//用二进制格式化程序的序列化方法来序列花save对象(参数:创建的文件流和序列化对象)
bf.Serialize(filestream,save);
//关闭流
filestream.Close();
(二进制的保存)
序列化过程(将对象转换为字节流)
创建对象并保存游戏状态
创建一个二进制格式化程序
创建一个文件流
用二进制格式化程序的序列化方法来序列化对象,参数:创建的文件流和序列化的对象
关闭流
做项目前,要把所需要的文件夹都先创建好
游戏暂停
Time.timeScale = 0;
//鼠标是否可见
Cursor.visible = true;
各位如果有发生找不到位置等的问题的话,有可能是你打多一个Space等的问题,并非仅有打错字才会发生的,所以请各位先生,小姐们注意会比较好哦
二进制方法:
xml 标记语言
犯了个离谱的错误:
6分04秒的UpdateMonsters代码是先判断目标是否激活。用来和其他协程的时间配合。
我没有这一步,直接就是停止所以协程。当更新怪物的时候,其他携程被停止掉,有的位置怪物处于正在激活的时间点,这就导致了它相关的代码没法向下执行。
导致任务20运行报错,提示没有引用物体。我尝试了一下,还是有问题。
PlayerPrefs:数据持久化方案
采用键值对的方式对数据进行存储
可以存储int float string类型的数据
PlayerPrefs.SetInt("index",1);
PlayerPrefs.SetFloat("Height",183.5f);
PlayerPrefs.SetString("Name","Tom");
获取数据
PlayerPrefs.GetInt("Index");
再看一遍: 设置手枪的旋转