- Home /
struggling with saving and loading multiple characters
I been trying all kinds of ways figure out how to do this but I still cant figure it out (for a feature that is so common I cant believe there is not a more thorough tutorial). Anyway, on my "main menu" I want to display a list of 5 buttons (these are to display created characters) and also have buttons for "create", "delete", and "play"
I can create a single player with all the stats I want saved and display the name to the button. But I'm still stuck trying to create a 2nd (separate) player/file/or whatever.
Also Im still just learning and would say I fall under the beginner category so please keep that in mind when(and if anyone responds).
Here is my SaveLoad script:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
public static class SaveLoad {
public static void Save(PlayerCharacter player) {
BinaryFormatter bf = new BinaryFormatter();
FileStream file = new Filestream(Application.persistentDataPath + "/savedGames.gd", Filemode.Create);
PlayerData data = new PlayerData(player);
bf.Serialize(file, data);
file.Close();
}
public static PlayerData Load() {
if(File.Exists(Application.persistentDataPath + "/savedGames.gd")) {
BinaryFormatter bf = new BinaryFormatter();
FileStream file = new Filestream(Application.persistentDataPath + "/savedGames.gd", FileMode.Open);
PlayerData data = bf.Deserialize(file) as PlayerData;
file.Close();
return data;
}
else{
return null
}
}
My PlayerData script :
[Serializable]
public class PlayerData
{
public int[] stats;
public string;
public PlayerData(PlayerCharacter player)
{
player.StatUpdate();
//NAME
name = player.Name;
//STATS
stats = new int[10];
for(int cnt; cnt < Enum.GetValues(typeof(AttributeName)).Length;cnt++)
{
stats[cnt] = player.GetPrimaryAttribute(cnt).BaseValue;
}
}
Also my PlayerCharacter Class inherits from a class that holds all the real player-related stuff(statUpdate, GetPrimaryAttributes, ect)....if that matters.
Doesn't seem like you tried anything suggested here: http://answers.unity3d.com/questions/1284657/is-there-a-good-tutorial-or-guide-on-making-multip.html#comment-1284682
On SaveLoad / 10 try
public static void Save(PlayerCharacter player, string _slot)
Create a Save Game UI with 5 buttons if your player presses Button 1, pass in string "01" if your player presses Button 2, pass in string "02" ... Change 13 to include _slot in the filename; change your Load stuff to accommodate as well. There are many options to choose from for a basic implementation of this.
Your answer
Follow this Question
Related Questions
Problem with saving and loading game timer 0 Answers
Sharing Violation On Path 1 Answer
Problem with saving the transform of the player 1 Answer