Jump to content
Unity Insider Forum

Vector3() speichern nur 1 Dezimalstelle ab


minuschki

Recommended Posts

Und wieder ein kleines Problemchen.

Ich speichere eine transform.localPosition (also Vector3 Daten) als string in eine Textdatei. Nach dem Einlesen eines gespeicherten Vector3 habe ich festgestellt, dass die Werte auf eine Stelle gerundet sind und nicht mehr dem ursprünglichen Wert exakt entsprechen.

Der richtige Vector3 hat die folgenden Werte: new Vector3(0.0f, 1.036848f, -0.001028f)

Gespeichert und wieder eingelesen werden aber folgenden Werte: new Vector3(0.0f, 1.0f, 0.0f)

 

Debug.Log("Position: " + transform.localPosition); // ergibt (0.0f, 1.0f, 0.0f) Die Werte sind auf eine Stelle gerundet

Debug.Log("Position: " + transform.localPosition.toString ("R")); // ergibt (0.0f, 1.036848f, -0.001028f) Diese Werte stimmen genau

 

Wie kann man also die genauen Werte abspeichern, so dass beim erneuten Einlesen alle Kommastellen angezeigt werden?

z.B. vec = new Vector3 (0.0f, 1.036848f, -0.001028f)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Sascha

Zuerst dachte ich: Na du bist mir aber auch ein Spassvogel mit deiner kecken Antwort. Aber dann hat es bei mir langsam gedämmert und ich darf sagen, dass du wieder einmal goldrichtig lagst!

Zwar konnte ich ToString("R") nicht innerhalb eines Vector3 benutzen aber als umgewandelter String hat es dann funktioniert:

startPos = new List<Vector3>();

startPos.Add (Hip.transform.localPosition);
string tt = startPos [0].ToString ("R");

Wahrscheinlich wäre es sogar klüger, gar nicht erst alle Positionen in einer Vector3 Liste zu sammeln und erst dann in einen String umzuwandeln, sondern die zu speichernden Positionen direkt mit transform.localPosition.ToString ("R") umzuwandeln und diese zu einem Sammelstring zusammenzufügen!

Danke für deinen Denkanstoss!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...