hey guys how are you
i am making a save and load system for my game but i am havind problems with saving the Rotation of my player in X.Y.Z i tried this but it wont rotate correct as intended.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[System.Serializable]
public class PlayerData
{
public float[] position;
public float[] rotation;
public PlayerData (SaveLoad player)
{
position = new float[3];
position[0] = player.transform.position.x;
position[1] = player.transform.position.y;
position[2] = player.transform.position.z;
// i tried it like this..
rotation = new float[3];
rotation[0] = player.transform.rotation.eulerAngles.x;
rotation[1] = player.transform.rotation.eulerAngles.y;
rotation[2] = player.transform.rotation.eulerAngles.z;
}
}
using System.Collections;
using UnityEngine;
public class SaveLoad : Photon.MonoBehaviour
{
public void SavePlayer()
{
SaveSystem.SavePlayer(this);
}
public void LoadPlayer()
{
PlayerData data = SaveSystem.LoadPlayer();
Vector3 position;
position.x = data.position[0];
position.y = data.position[1];
position.z = data.position[2];
Vector3 rotation;
rotation.x = data.rotation[0];
rotation.y = data.rotation[1];
rotation.z = data.rotation[2];
}
}
Idk mate, works super fine on my machine
using UnityEngine;
public class PlayerComponent : MonoBehaviour
{
[SerializeField] string _saveSlot = "save-slot-name";
[SerializeField] KeyCode _saveKey = KeyCode.F5;
[SerializeField] KeyCode _loadKey = KeyCode.F8;
void Update ()
{
if( Input.GetKeyDown(_saveKey) )
{
SaveData data = new SaveData{ Numbers = new float[6] };
{
Vector3 pos = transform.position;
Vector3 rot = transform.rotation.eulerAngles;
data.Version = 1;
data.Numbers[0] = pos.x;
data.Numbers[1] = pos.y;
data.Numbers[2] = pos.z;
data.Numbers[3] = rot.x;
data.Numbers[4] = rot.y;
data.Numbers[5] = rot.z;
}
PlayerPrefs.SetString( key:_saveSlot , value:JsonUtility.ToJson(data) );
Debug.Log($"Save Complete (data.Version:{data.Version})");
}
else if( Input.GetKeyDown(_loadKey) )
{
SaveData data = JsonUtility.FromJson<SaveData>( PlayerPrefs.GetString(_saveSlot) );
if( data==null ) Debug.LogWarning("no save data to load");
else if( data.Version==1 )
{
Vector3 pos = new Vector3{
x = data.Numbers[0] ,
y = data.Numbers[1] ,
z = data.Numbers[2] ,
};
Vector3 rot = new Vector3{
x = data.Numbers[3] ,
y = data.Numbers[4] ,
z = data.Numbers[5] ,
};
transform.SetPositionAndRotation( pos , Quaternion.Euler(rot) );
Debug.Log($"Load Complete (data.Version:{data.Version})");
}
else if( data.Version==2 ) {}// etc.
else Debug.LogWarning("data version is invalid");
}
}
}
[System.Serializable]
public class SaveData
{
public int Version;
public float[] Numbers;
}