Вторник, 23 Апреля 2024, 20:01

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Сохранение игры
Сохранение игры
GidlyДата: Вторник, 07 Августа 2018, 23:24 | Сообщение # 1
был не раз
Сейчас нет на сайте
Не сохраняется кол-во хп, хотя вроде по идее должно. Пишет ошибку, что мол ссылка на объект не указывает на экземпляр объекта, помогите пожалуйста, люди добрые!

Код
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[System.Serializable]
public class SaveData
{
   public Pers_control control;
    public int ammo;
    public int health;
    public Vector3 pos;
}

public class SaveSystem : MonoBehaviour
{
    public AK AK;
    public Pers_control pers;
    public int ammo;
    public int health;
    public Vector3 pos;

    void Start()
    {
        Load();
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.F6))
        {
            Save();
        }

        if (Input.GetKeyDown(KeyCode.F7))
        {
            Load();
        }
    }

    public void Save()
    {
        SaveData save = new SaveData();

        save.ammo = ammo;
        save.health = health;
        save.pos = transform.position;
        save.control.health = pers.health;

        string json = JsonUtility.ToJson(save);

        System.IO.File.WriteAllText("save.dat", json);
    }

    public void Load()
    {
        string json = System.IO.File.ReadAllText("save.dat");

        if (!string.IsNullOrEmpty(json))
        {
            var save = JsonUtility.FromJson<SaveData>(json);

            ammo = save.ammo;
            health = save.health;
            transform.position = save.pos;
            pers.health = save.control.health;
        }
    }
}


Сообщение отредактировал Gidly - Вторник, 07 Августа 2018, 23:24
Storm54Дата: Среда, 08 Августа 2018, 05:02 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
Код
save.control.health = pers.health;
- control не инициализирован и вообще не нужен в классе SaveData
GidlyДата: Среда, 08 Августа 2018, 10:38 | Сообщение # 3
был не раз
Сейчас нет на сайте
Точняк! Спасибо! Написал вот так, он теперь и патроны сохраняет!
Код
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[System.Serializable]
public class SaveData
{
    public int ammo;
    public int health;
    public Vector3 pos;
}

public class SaveSystem : MonoBehaviour
{
    public AK AK;
    public Pers_control pers;
    public Vector3 pos;

    void Start()
    {
        Load();
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.F6))
        {
            Save();
        }

        if (Input.GetKeyDown(KeyCode.F7))
        {
            Load();
        }
    }

    public void Save()
    {
        SaveData save = new SaveData();

        save.pos = transform.position;
        save.health = pers.health;
        save.ammo = AK.CurAmmo;

        string json = JsonUtility.ToJson(save);

        System.IO.File.WriteAllText("save.dat", json);
    }

    public void Load()
    {
        string json = System.IO.File.ReadAllText("save.dat");

        if (!string.IsNullOrEmpty(json))
        {
            var save = JsonUtility.FromJson<SaveData>(json);

            transform.position = save.pos;
            pers.health = save.health;
            AK.CurAmmo = save.ammo;
        }
    }
    void OnApplicationQuit()
    {
        Save();
    }
}
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Сохранение игры
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг