- Home /
Saving a 3D array of floats?
I am making a 2D sidescroller, which generates the main level when it is started. However, I would like to be able to save the level generated, so that the player has only that one level in his/her game session (until the game is over). I stored the data for the level in a 3D float array. I tried PlayerPrefsX, but that does not support multidimensional arrays. Is there any good way of saving a 3D array, or shall I just rethink my level generator algorithm?
Answer by Cherno · Nov 25, 2015 at 11:14 AM
You can flatten the array and save this along with the floats for length, width and height so you can un-flatten it after loading.
//Flatten Array
List yourList = new List();
for(int x = 0; x < yourArray.GetLength(0); x++) {
for(int y = 0; y < yourArray.GetLength(1); y++) {
for(int z = 0; z < yourArray.GetLength(2); z++) {
yourList.Add(yourArray[x,y,z]);
}
}
}
//Save these:
float[] savedArray = yourList.ToArray();
float savedArray_sizeY = yourArray.GetLength(1);
float savedArray_sizeZ = yourArray.GetLength(2);
//unflatten:
int x = 0;
int y = 0;
int z = 0;
for(int i = 0; i < savedArray .Length; i ++) {
yourArray[x,y,z] = savedArray[i];
z++;
if (z == savedArray_sizeZ) {
z = 0;
if(y < savedArray_sizeY - 1) {
y++;
}
else {
x++;
y = 0;
}
Your answer
Follow this Question
Related Questions
Problem to add a delete method to a saveload script C# 3 Answers
How to Save Objects that were added into the scene at runtime 2 Answers
How to Save Password in My Login Page ? 2 Answers
Save progress in WebGL game (C#) 1 Answer
Serialization exception attempting deserialize an empty stream 2 Answers