Скрытый текст:
Значит у меня есть класс Program2. Это основной класс в котором объявлен лист:
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Program2 : MonoBehaviour
{
private History history;
private Program3 program3 = new Program3();
private Serializator ser = new Serializator();
public List<Program3> list = new List<Program3>(); //Это лист
public Program2() { } //Пустой конструктор
public Program2(List<Program3> list) //Не пустой конструктор
{
this.list = list;
}
public void Save(string datapath)
{
for (int i = 0; i < history.list.Count; i++)
{
list.Add(new Program3(history.list[i].nameProgram, history.list[i].descriptionProgram, history.list[i].sellProgram, history.list[i].idProgram)); //Заполняю лист объектами
}
ser.SaveXml(this, datapath);
}
public void Add(object o) { } //Хз зачем это
private void Start()
{
history = GameObject.FindGameObjectWithTag("HistoryGameObject").GetComponent<History>();
}
}
using System.Collections.Generic;
using UnityEngine;
public class Program2 : MonoBehaviour
{
private History history;
private Program3 program3 = new Program3();
private Serializator ser = new Serializator();
public List<Program3> list = new List<Program3>(); //Это лист
public Program2() { } //Пустой конструктор
public Program2(List<Program3> list) //Не пустой конструктор
{
this.list = list;
}
public void Save(string datapath)
{
for (int i = 0; i < history.list.Count; i++)
{
list.Add(new Program3(history.list[i].nameProgram, history.list[i].descriptionProgram, history.list[i].sellProgram, history.list[i].idProgram)); //Заполняю лист объектами
}
ser.SaveXml(this, datapath);
}
public void Add(object o) { } //Хз зачем это
private void Start()
{
history = GameObject.FindGameObjectWithTag("HistoryGameObject").GetComponent<History>();
}
}
Скрипт в таком ужасном виде потому что я перепробовал уже всё что можно.
Собстна класс Program3
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Program3
{
public string nameProgram;
public string descriptionProgram;
public string sellProgram;
public int idProgram;
public Program3()
{
}
public Program3(string nameProgram, string descriptionProgram, string sellProgram, int idProgram)
{
this.nameProgram = nameProgram;
this.descriptionProgram = descriptionProgram;
this.sellProgram = sellProgram;
this.idProgram = idProgram;
}
}
using System.Collections.Generic;
using UnityEngine;
public class Program3
{
public string nameProgram;
public string descriptionProgram;
public string sellProgram;
public int idProgram;
public Program3()
{
}
public Program3(string nameProgram, string descriptionProgram, string sellProgram, int idProgram)
{
this.nameProgram = nameProgram;
this.descriptionProgram = descriptionProgram;
this.sellProgram = sellProgram;
this.idProgram = idProgram;
}
}
И сериализатор
Синтаксис:
Используется csharp
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Xml.Serialization;
using UnityEngine;
public class Serializator
{
private Program2 program2;
public void SaveXml(Program2 program2, string datapath)
{
this.program2 = program2;
Type[] extraTypes = { typeof(Program3) };
XmlSerializer serializer = new XmlSerializer(typeof(Program2), extraTypes); //СТРОЧКА НА КОТОРУЮ ЖАЛУЕТСЯ ЮНИТИ
FileStream fs = new FileStream(datapath, FileMode.Create);
for (int i = 0; i < program2.list.Count; i++)
{
serializer.Serialize(fs, program2.list[i].nameProgram); //Я ЗНАЮ ЧТО ЭТО НЕ ПРАВИЛЬНО, просто пробовал, а вдруг сработает вместо serializer.Serialize(fs, program2.list);
serializer.Serialize(fs, program2.list[i].descriptionProgram);
serializer.Serialize(fs, program2.list[i].sellProgram);
serializer.Serialize(fs, program2.list[i].idProgram);
}
fs.Close();
}
public Program2 DeXml(string datapath) //Это пока не делал, просто так написано (на будущее)
{
Type[] extraTypes = { typeof(Program3) };
XmlSerializer serializer = new XmlSerializer(typeof(Program2), extraTypes);
FileStream fs = new FileStream(datapath, FileMode.Open);
Program2 program2 = (Program2)serializer.Deserialize(fs);
fs.Close();
return program2;
}
}
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Xml.Serialization;
using UnityEngine;
public class Serializator
{
private Program2 program2;
public void SaveXml(Program2 program2, string datapath)
{
this.program2 = program2;
Type[] extraTypes = { typeof(Program3) };
XmlSerializer serializer = new XmlSerializer(typeof(Program2), extraTypes); //СТРОЧКА НА КОТОРУЮ ЖАЛУЕТСЯ ЮНИТИ
FileStream fs = new FileStream(datapath, FileMode.Create);
for (int i = 0; i < program2.list.Count; i++)
{
serializer.Serialize(fs, program2.list[i].nameProgram); //Я ЗНАЮ ЧТО ЭТО НЕ ПРАВИЛЬНО, просто пробовал, а вдруг сработает вместо serializer.Serialize(fs, program2.list);
serializer.Serialize(fs, program2.list[i].descriptionProgram);
serializer.Serialize(fs, program2.list[i].sellProgram);
serializer.Serialize(fs, program2.list[i].idProgram);
}
fs.Close();
}
public Program2 DeXml(string datapath) //Это пока не делал, просто так написано (на будущее)
{
Type[] extraTypes = { typeof(Program3) };
XmlSerializer serializer = new XmlSerializer(typeof(Program2), extraTypes);
FileStream fs = new FileStream(datapath, FileMode.Open);
Program2 program2 = (Program2)serializer.Deserialize(fs);
fs.Close();
return program2;
}
}
Вообщем надоело мучится. Прошу вашей помощи. А пока пойду жопу бинтовать