Я создала класс "Players", в котором хранится вся нужная информация о конкретном юзере и класс "Users" для работы с этими юзерами.
Синтаксис:
Используется csharp
namespace MyName
{
[Serializable]
class Player
{
public string name;
public string cur_animal = "pig";
public int level = 1;
}
class Users
{
public List<Player> users = new List<Player>();
public void AddUser(string name)
{
int count = 0; //количество повторений
for (int i = 0; i < users.Count(); i++)
{
if (name == users[i].name)
{
count++;
break;
}
}
//если таких больше нет, то записываем его
if (count == 0)
{
Player p = new Player();
p.name = name;
users.Add(p);
}
else
{
//сообщение об ошибке
}
}
public void SaveUsers()
{
using (FileStream fin = new FileStream("Gamesave.txt", FileMode.OpenOrCreate))
{
BinaryFormatter formatter = new BinaryFormatter();
users = (List<Player>)formatter.Deserialize(fin);
}
}
public void LoadUsers()
{
using (FileStream fout = new FileStream("Gamesave.txt", FileMode.OpenOrCreate))
{
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(fout, users);
}
}
}
{
[Serializable]
class Player
{
public string name;
public string cur_animal = "pig";
public int level = 1;
}
class Users
{
public List<Player> users = new List<Player>();
public void AddUser(string name)
{
int count = 0; //количество повторений
for (int i = 0; i < users.Count(); i++)
{
if (name == users[i].name)
{
count++;
break;
}
}
//если таких больше нет, то записываем его
if (count == 0)
{
Player p = new Player();
p.name = name;
users.Add(p);
}
else
{
//сообщение об ошибке
}
}
public void SaveUsers()
{
using (FileStream fin = new FileStream("Gamesave.txt", FileMode.OpenOrCreate))
{
BinaryFormatter formatter = new BinaryFormatter();
users = (List<Player>)formatter.Deserialize(fin);
}
}
public void LoadUsers()
{
using (FileStream fout = new FileStream("Gamesave.txt", FileMode.OpenOrCreate))
{
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(fout, users);
}
}
}
Каждый раз, как только пользователь жмет кнопку "Сменит игрока", то вызывается следующая функция, которая печатает всех доступных игроков в список.
Синтаксис:
Используется csharp
Users vUsers = new Users();
public void Continue(Dropdown DropDown)
{
vUsers.LoadUsers(); // загрузить игроков из памяти
if (vUsers.users.Count > 0)
{
DropDown.ClearOptions();
for (int i = 0; i < vUsers.users.Count; i++)
{
DropDown.options.Add(new Dropdown.OptionData(vUsers.users[i].name));
}
}
else
{
DropDown.ClearOptions();
DropDown.options.Add(new Dropdown.OptionData("Игроки еще не созданы"));
}
}
public void Continue(Dropdown DropDown)
{
vUsers.LoadUsers(); // загрузить игроков из памяти
if (vUsers.users.Count > 0)
{
DropDown.ClearOptions();
for (int i = 0; i < vUsers.users.Count; i++)
{
DropDown.options.Add(new Dropdown.OptionData(vUsers.users[i].name));
}
}
else
{
DropDown.ClearOptions();
DropDown.options.Add(new Dropdown.OptionData("Игроки еще не созданы"));
}
}
Если добавлять игроков, то они спокойно добавляются в массив и файл перезаписывается, но cреализация почему-то не работает, то есть в файл не выписывается ни один игрок.
P.S. функцию SaveUsers вызываю, и после добавления нового игрока, и после закрытия приложения.
В чем может быть проблема? Заранее большое спасибо.