Понедельник, 11 Ноября 2024, 07:41

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Помогите доделать сохранение
vova1227Дата: Среда, 03 Марта 2021, 02:01 | Сообщение # 1
был не раз
Сейчас нет на сайте
Подскажите пожалуйста, что надо исправить, и как завершить данный кусок кода.
Это то что мне удалось найти и дополнить а так же поправить, но я не до конца уверен в правильности синтаксиса и еще некоторые моменты:

ObjectsPositions.Add(obj); //компилятор ругается
obj не удается преобразовать из GameObject в SaveGameToM.myVector3

_______________________

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;

public class SaveGameToM : MonoBehaviour
{


public GameObject Cube1Pref;

public struct myVector3
{
public float x, y, z;
}

[SerializeField]
public List<myVector3> ObjectsPositions = new List<myVector3>();

public void Start()
{
ObjectsPositions = Load();

foreach (var pos in ObjectsPositions)
{
Instantiate(Cube1Pref, new Vector3(pos.x, pos.y, pos.z), Quaternion.identity);
}
}

public void OnApplicationQuit()
{
foreach (var obj in GameObject.FindGameObjectsWithTag("Cube1"))

{
ObjectsPositions.Add(obj);
}

Save(ObjectsPositions);
}
//Сериализовывать эту структурыв JSON или BinarySerialize.

void List<myVector3>Load()
{



return;
// [десериализуем оттуда, куда сериализуем в методе Save]
}

void Save(List<myVector3> positions)
{

// [сериализуем positions
}
Sanchez06Дата: Среда, 03 Марта 2021, 05:43 | Сообщение # 2
участник
Сейчас нет на сайте
Код

foreach (var obj in GameObject.FindGameObjectsWithTag("Cube1"))

{
ObjectsPositions.Add(obj);
}

Тут нужно бы добавлять новый экземпляр myVector3
Код
foreach (var obj in GameObject.FindGameObjectsWithTag("Cube1"))

{
myVector3 i = new myVector3()
i.x = obj.transform.position.x;
i.y = obj.transform.position.y;
i.z = obj.transform.position.z;
ObjectsPositions.Add(i);
}


Код
void List<myVector3>Load()

Во первых, Void означает, что функция ничего не возвращает, но тут тебе нужно вернуть лист. Да и тип возвращаемого значения нужно писать через пробел:
Код
public List<myVector3> Load()


Насчет сериализации - я тебе писал в соседней теме (и почему стоило новую создавать?), там все предельно просто. На твоем примере будет как-то так:
Код

void Save(List<myVector3> positions)
{

        BinaryFormatter formatter = new BinaryFormatter();

            using (FileStream stream = new FileStream(Application.persistentDataPath + "/save.sav", FileMode.Create))
            {
                formatter.Serialize(Application.persistentDataPath + "/save.sav", positions);
            }
}


И загрузка:
Код

public List<myVector3> Load()
{
List<myVector3> objects;
BinaryFormatter formatter = new BinaryFormatter();

            using (FileStream stream = new FileStream(Application.persistentDataPath + "/save.sav", FileMode.Open))
            {
                objects = (List<myVector3>)formatter.Deserialize(stream);
            }
return objects;
}
vova1227Дата: Среда, 03 Марта 2021, 15:57 | Сообщение # 3
был не раз
Сейчас нет на сайте
Цитата Sanchez06 ()
И загрузка:


Спасибо тебе большое человек, я до социализации еще не дошел, она пока что в черновике написана, я на придаче в массив как застопорился так и целый день убил на чтение всего что только можно.
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг
Предлагаем купить пороги рендж ровер спорт с установкой.