Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите с сохранение Unity

Shnuk Ученик (187), на голосовании 2 недели назад
Я знаю только как в этом скрипте сохранять переменные, а как например сохранить GameObject? Я хочу сохранить выполненный квест или предмет в инвентаре, как это сделать?

public class SaveSerial : MonoBehaviour
{
int intToSave;
float floatToSave;
bool boolToSave;

void OnGUI()
{
if (GUI.Button(new Rect(0, 0, 125, 50), "int числ"))
intToSave++;
if (GUI.Button(new Rect(0, 100, 125, 50), "float число"))
floatToSave += 0.1f;
if (GUI.Button(new Rect(0, 200, 125, 50), "Bool True"))
boolToSave = boolToSave ? boolToSave = false : boolToSave = true;

GUI.Label(new Rect(375, 0, 125, 50), "Integer value is "
+ intToSave);
GUI.Label(new Rect(375, 100, 125, 50), "Float value is "
+ floatToSave.ToString("F1"));
GUI.Label(new Rect(375, 200, 125, 50), "Bool value is "
+ boolToSave);

if (GUI.Button(new Rect(750, 0, 125, 50), "Сохранить игру"))
SaveGame();
if (GUI.Button(new Rect(750, 100, 125, 50), "Загрузить игру"))
LoadGame();
if (GUI.Button(new Rect(750, 200, 125, 50), "Сбросить сохранение"))
ResetData();
}

void SaveGame()
{
BinaryFormatter bf = new BinaryFormatter();
FileStream file = File.Create(Application.persistentDataPath
+ "/MySaveData.dat");
SaveData data = new SaveData();
data.savedInt = intToSave;
data.savedFloat = floatToSave;
data.savedBool = boolToSave;
bf.Serialize(file, data);
file.Close();
Debug.Log("Game data saved!");
}

void LoadGame()
{
if (File.Exists(Application.persistentDataPath
+ "/MySaveData.dat"))
{
BinaryFormatter bf = new BinaryFormatter();
FileStream file =
File.Open (Application.persistentDataPath
+ "/MySaveData.dat", FileMode.Open );
SaveData data = (SaveData)bf.Deserialize(file);
file.Close();
intToSave = data.savedInt;
floatToSave = data.savedFloat;
boolToSave = data.savedBool;
Debug.Log("Game data loaded!");
}
else
Debug.LogError("There is no save data!");
}

void ResetData()
{
if (File.Exists(Application.persistentDataPath
+ "/MySaveData.dat"))
{
File.Delete(Application.persistentDataPath
+ "/MySaveData.dat");
intToSave = 0;
floatToSave = 0.0f;
boolToSave = false;
Debug.Log("Data reset complete!");
}
else
Debug.LogError("No save data to delete.");
}
}

[Serializable]
class SaveData
{
public int savedInt;
public float savedFloat;
public bool savedBool;
}
Голосование за лучший ответ
Похожие вопросы