Синтаксис:
Используется csharp
float x = objects[23].transform.GetChild(i).localPosition.x;
if (PlayerPrefs.GetString("joyTo") == "left" && objects[23].transform.GetChild(i).localPosition.x > 0f || PlayerPrefs.GetString("joyTo") == "right" && objects[23].transform.GetChild(i).localPosition.x < 0f) x *= -1f;
objects[23].transform.GetChild(i).localPosition = new Vector3(x, objects[23].transform.GetChild(i).localPosition.y, objects[23].transform.GetChild(i).localPosition.z);
if (PlayerPrefs.GetString("joyTo") == "left" && objects[23].transform.GetChild(i).localPosition.x > 0f || PlayerPrefs.GetString("joyTo") == "right" && objects[23].transform.GetChild(i).localPosition.x < 0f) x *= -1f;
objects[23].transform.GetChild(i).localPosition = new Vector3(x, objects[23].transform.GetChild(i).localPosition.y, objects[23].transform.GetChild(i).localPosition.z);
После оптимизации код выглядит так
Синтаксис:
Используется csharp
objects[23].transform.GetChild(i).localPosition = new Vector3(objects[23].transform.GetChild(i).localPosition.x * (PlayerPrefs.GetString("joyTo") == "left" && objects[23].transform.GetChild(i).localPosition.x > 0f || PlayerPrefs.GetString("joyTo") == "right" && objects[23].transform.GetChild(i).localPosition.x < 0f ? -1f : 1f), objects[23].transform.GetChild(i).localPosition.y, objects[23].transform.GetChild(i).localPosition.z);
По русски говоря строчка выглядит вот так
позиция джойстика = new Vector3(Х координата джойстика * (условие ? -1f : 1f), Y координата джойстика, Z координата джойстика);
В редакторе код выглядит красивее - одной строчкой
Вопрос в чем, оптимизировал я его или усложнил? Стараюсь использовать меньше переменных и производить все вычисления в одной строчке, где то читал что так делать нельзя с сложными вычислениями и что лучше их присваивать перемнным, после обращаться к ним
а = позиция 1 - позиция 2;
если b=true то d = позиция 3 - позиция; иначе d = a * позиция 3;
позиция = d;
вместо
позиция = b ? позиция 3 - позиция : (позиция 1 - позиция 2) * позиция 3;
Нужны советы