- Home /
Serialize loads of different data
Hi,
My question is as follows. I have a game where there are multiple Characters, all with their health system, skills, items etc. I managed to serialize the position of each character and then load that info back in so they are in the position that you saved it in.
What now if i also want to add all that other info? What is an efficient way of getting all the data, without writing too many lines of code? Should i compress all the health info into one string and then when i load it back up divide the lines so the Characters get the correct info again?
As an example here is my health class
using UnityEngine;
using System.Collections;
[System.Serializable]
public class Health
{
public string bodypartName;
public int healthId;
public int bodyPartMaxHealthPoints;
public int bodypartHealthpoints;
public HealthStatus healthStatus;
//these are all the existing itemtypes. This is a selectable when creating an item, and will identify it as one
public enum HealthStatus
{
Fine, Broken, Torn, Infected, Paralyzed
}
//this is how every single item will be set up. If i want to add more, i have to add them in the public class Item and then
//add them here as well so the itemDatabase can be updated
public Health(string name, int id, int maxhp, int hp, HealthStatus type)
{
bodypartName = name;
healthId = id;
bodyPartMaxHealthPoints = maxhp;
bodypartHealthpoints = hp;
healthStatus = type;
}
}
And the script attached to the character gameObject that gets the info from the database
using UnityEngine;
using System.Collections;
public class CharacterHealthSystem : MonoBehaviour {
public Health head;
public Health torso;
public Health stomach;
public Health leftArm;
public Health rightArm;
public Health leftLeg;
public Health rightLeg;
private HealthDatabase healthDatabase;
void Update()
{
if (head.bodypartHealthpoints <= 50)
{
head.healthStatus = Health.HealthStatus.Torn;
}
if (head.bodypartHealthpoints <-0)
{
Destroy(transform.parent.gameObject);
}
}
void Start()
{
healthDatabase = GameObject.FindGameObjectWithTag("HealthManager").GetComponent<HealthDatabase>();
UpdateHealth();
}
void UpdateHealth()
{
head = healthDatabase.parts[0];
torso = healthDatabase.parts[1];
stomach = healthDatabase.parts[2];
leftArm = healthDatabase.parts[3];
rightArm = healthDatabase.parts[4];
leftLeg = healthDatabase.parts[5];
rightLeg = healthDatabase.parts[6];
}
}
The biggest letdown is that i can't just serialize the GameObject, that would make the job a lot easier. Or is there a way to save certain components with BinaryFormatter?
Your answer
Follow this Question
Related Questions
Help saving Voxel Terrain between scenes 2 Answers
Serialize a Dictionary 1 Answer
Saving Non-Prefab Data During Editor Play 0 Answers
Binary Serialization (In Editor) - Path Access denied / File not found 0 Answers
Serialize List>??? 0 Answers