Копирование всех значений преобразования объекта gameObject? - PullRequest
1 голос
/ 27 июня 2019

Есть ли способ скопировать значения преобразования (положение, вращение, масштабирование) игрового объекта в сценарии.Я не хочу копировать каждое значение преобразования отдельно, как указано ниже в сценарии.

public GameObject Obj02;
public GameObject Obj04;
private Vector3 positionOfObj02;
private Vector3 rotationOfObj02;
private Vector3 positionOfObj04;
private Vector3 rotationOfObj04;

void Start()
{
    positionOfObj02 = Obj02.transform.localPosition;
    rotationOfObj02 = Obj02.transform.localEulerAngles;

    positionOfObj04 = Obj04.transform.localPosition;
    rotationOfObj04 = Obj04.transform.localEulerAngles;
}

1 Ответ

3 голосов
/ 27 июня 2019

Нет, не встроенный, но я бы порекомендовал правильный тип

[Serializable]
public class TransformData
{
    public Vector3 LocalPosition = Vector3.zero;
    public Vector3 LocalEulerRotation = Vector3.zero;
    public Vector3 LocalScale = Vector3.one;

    // Unity requires a default constructor for serialization
    public TransformData() { }

    public TransformData(Transform transform)
    {
        LocalPosition = transform.localPosition;
        LocalEulerRotation = transform.localEulerAngles;
        LocalScale = transform.localScale;
    }

    public void ApplyTo(Transform transform)
    {
        transform.localPosition = LocalPosition;
        transform.localEulerAngles = LocalEulerRotation ;
        transform.localScale = LocalScale;
    }
}

и используйте его как

public GameObject Obj02;
public GameObject Obj04;

private TransformData transformDataOfObj02;
private TransformData transformDataOfObj04;

void Start()
{
    transformDataOfObj02 = new TransformData(Obj02.transform);
    transformDataOfObj04 = new TransformData(Obj04.transform);
}

и позже возможно

transformDataOfObj02.ApplyTo(anotherObject.transform);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...