15555人加入学习
(100人评价)
通过实例学习:游戏的存档与读档(Unity 2017.2)

制作完成于2018-1-12

价格 免费

子弹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");

[展开全文]

再看一遍: 设置手枪的旋转

[展开全文]

授课教师

SIKI学院老师

课程特色

图文(1)
下载资料(1)
视频(34)