ВАЖНОЕ РЕДАКТИРОВАНИЕ !!!!!!!(Я также отредактировал код)
Я обнаружил, что когда я делаю string[] pos = value.Split(',');
и другие, это делает правильную вещь, но вот сделка
ВUnity, десятичные дроби в строке представлены ,
, поэтому, когда я делаю string[] pos = value.Split(',');
, он разделяется на первые 3 запятые, которые он находит, и если вы проверяете Пример данных , я только что изменил, и вы разделяете дляпервые 3 запятые, вы будете иметь Фактические результаты
Мне также удалось исправить шкалу
Исходное сообщение:
I 'Я пытаюсь найти единство, и я следовал этому руководству , чтобы создать хорошую систему сохранения / загрузки (обратите внимание, что я удалил строку value = value.Replace(" ","");
, потому что она не нужна):
// Note: value is guaranteed to be a string of numbers in the format: "(1,2,3)"
public Vector3 StringToVector(string value)
{
value = value.Trim('(', ')');
value = value.Replace(" ","");
string[] pos = value.Split(',');
return new Vector3(float.Parse(pos[0]), float.Parse(pos[1]), float.Parse(pos[2]));
}
Я думаю, что здесь есть ошибка, потому что, если я использую упомянутую функцию в этой другой функции, ось X работает нормально, две другие (Y и Z) * 1029 * не :
public virtual void Load(string[] values)
{
// in in the variable values[] i have in these positions:
// values[0] objectname, values[1] (x,y,z) position, values[2] (x,y,z) scale
transform.localPosition = SaveGameManager.Instance.StringToVector(values[1]);
transform.localScale = SaveGameManager.Instance.StringToVector(values[2]);
}
Пример данных
string position = "(190,0, 2,5, 180,0)";
string scale = "(5, 5, 5)";
Ожидаемые результаты
- позиция: <190, 2.5, 180>
- сcale: <5, 5, 5>
Фактические результаты
- позиция: <190,0 0,0 2,0>
- шкала: <5, 5, 5>