Когда я хочу изменить положение преобразования в Unity, я обычно делаю следующее:
var x = 10f;
transform.position = new Vector3(x, transform.position.y, transform.position.z);
Но я думаю, что это немного утомительно. Поэтому я добавил этот метод расширения в класс Vector3.
public static class Vector3Extensions
{
public static void SetX(this Vector3 pos, float x)
{
pos = new Vector3(x, pos.y, pos.z);
}
....
Когда я это назвал, ошибки нет, но на самом деле значение не изменилось. Да, я знаю, что это произойдет, потому что Vector3 является struct. Я попытался добавить ключевое слово ref к моим методам,
public static void SetX(ref this Vector3 pos, float x)
{
pos = new Vector3(x, pos.y, pos.z);
}
, но оно не работает, потому что возникает ошибка "Свойство или индексатор не могут быть переданы как параметр out или ref параметр". Я хочу сделать так же, как:
transform.position.SetX(10f);
Есть ли способ? спасибо.