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?
You can flatten the array and save this along with the floats for length, width and height so you can unflatten 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*;*

z++;*

if (z == savedArray_sizeZ) {*

z = 0;*

if(y < savedArray_sizeY  1) {*

y++;*

}*

else {*

x++;*

y = 0;*

}*