Unity CG -2.Система Сохранения/Загрузки(Запись данных|Сериализация)

preview_player
Показать описание
В этом уроке допишем систему сохранения и загрузки, сделаем запись в бинарный файл, сериализацию данных, удаление сохранений

________________________________________________________________




Рекомендации по теме
Комментарии
Автор

чисто топ. ты круче других ютуберов, которые объясняют поверхностно. СПАСИБО ОГРОМНОЕЕЕЕЕ!!!

ionegamer
Автор

Спасибо за урок!
Очень сильно благодарен!

desmondsstudio
Автор

В методе загрузки не хочет перемещать игрока по заданным координатам. В методе start update и других обычных методах перемещение работает. Причём функции работы с слотами написаны правильно и проверены на работоспособность. using System.Collections;
using System.IO;
using
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class SaveLoadSystem : MonoBehaviour
{
public GameObject pause_ui;
public GameObject pause_menu;
public GameObject pause_saveAndload;

public Text slot1;
public Text slot2;

public Button save;
public Button load;
public Button delete;

public GameObject player;

public Button cur_click_btn_slot;

[System.Serializable]
public class Save
{
public string NameSave;
public float x;
public float y;
public float z;
}


void Update()
{
if
{
if (pause_ui.activeSelf)
{
Time.timeScale = 1;
pause_ui.SetActive(false);

}

else
{
pause_ui.SetActive(true);
Time.timeScale = 1;
}



}




}
public void ClickSlot(Button btn)
{



cur_click_btn_slot = btn;
}

public void Back()
{

pause_menu.SetActive(true);
}
public void ToSaveAndLoadMenu()
{

pause_menu.SetActive(false);

if + "/saves/save"))
{
FileStream fs = new + "/saves/save", FileMode.Open);
BinaryFormatter formatter = new BinaryFormatter();
Save save =
slot1.text = "Сохранение " + save.NameSave;
fs.Close();
}
if + "/saves/save2"))
{
FileStream fs = new + "/saves/save2", FileMode.Open);
BinaryFormatter formatter = new BinaryFormatter();
Save save =
slot2.text = "Сохранение " + save.NameSave;
fs.Close();
}
}

public void Saves()
{
SlotConfig slotConfig =
slotConfig.isActive = true;
Save save = new Save();
save.NameSave =
save.x = player.transform.position.x;
save.y = player.transform.position.y;
save.z = player.transform.position.z;
if + "saves"))
{
+ "/saves");
if (slotConfig.cur_slot_num == 1)
{

FileStream fs = new + "/saves/save", FileMode.Create);
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(fs, save);
slot1.text = "Сохранение " + save.NameSave;
fs.Close();
}
if (slotConfig.cur_slot_num == 2)
{
FileStream fs = new + "/saves/save2", FileMode.Create);
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(fs, save);
slot2.text = "Сохранение " + save.NameSave;
fs.Close();
}
}


}

public void LoadSave()
{
SlotConfig slotConfig =
if (slotConfig.cur_slot_num == 1)
{
if + "/saves/save"))
{
FileStream fs = new + "/saves/save", FileMode.Open);
BinaryFormatter formatter = new BinaryFormatter();
Save save =
player.transform.position = new Vector3(save.x, save.y, save.z);

Debug.Log("Загрузка1");

fs.Close();
}
}
if (slotConfig.cur_slot_num == 2)
{
if + "/saves/save2"))
{
FileStream fs = new + "/saves/save2", FileMode.Open);
BinaryFormatter formatter = new BinaryFormatter();
Save save =
Debug.Log("Загрузка2");
player.transform.position = new Vector3(save.x, save.y, save.z);
fs.Close();
}
}

}

public void DeleteSave()
{
SlotConfig slotConfig =
if (slotConfig.cur_slot_num == 1)
{
if + "/saves/save"))
{
+ "/saves/save");
slot1.text = "Пустой слот";
}

}
if (slotConfig.cur_slot_num == 2)
{
if + "/saves/save2"))
{
+ "/saves/save2");
slot2.text = "Пустой слот";
}
}
}
public void Exit_pause()
{

pause_ui.SetActive(false);
Time.timeScale = 1;
}
}

qlobal
Автор

Хороший урок, теперь не мешало бы эти данные защитить от взлома)

КолянКоляныч-бь
Автор

можно пожалуйста исходники данного сохранения?)

АБУЛИЯ-зц
Автор

Можешь помочь?
Я написал скрипты, все работает кроме самого сохранения и загрузки...
Что делать?

ionegamer
Автор

А как сделать так, чтобы при перезагрузке игры сохранения не пропадали.

ДжонЛетов
Автор

Блин а ведь все остальное то не возвращается на исходные(враги, дроп и т.д.)

ДжонЛетов