почему при изменении значения ссылки A исходный экземпляр не изменяется? - PullRequest
0 голосов
/ 18 февраля 2019

Я пишу скрипт для блокировки масштаба объектов в Unity.

С objectTransformScale = objectTransform.localScale.

Изменения, сделанные на objectTransformScale, также должны повлиять на objectTransform.localScale, но это не так.

Следовательно, я должен установить значение обратно как objectTransform.localScale = objectTransformScale;

Почему это не работает?

public string demension; 

private Transform objectTransform;
private Vector3 objectTransformScale;
private float originalX;
private float originalY;
private float originalZ;

// Use this for initialization
void Start () {
    objectTransform = GetComponent<Transform>();
    objectTransformScale = objectTransform.localScale;
    originalX = objectTransformScale.x;
    originalY = objectTransformScale.y;
    originalZ = objectTransformScale.z;
}

// Update is called once per frame
void Update () {
    objectTransformScale = objectTransform.localScale;
    if (demension.Equals("x"))
    {
        objectTransformScale.x = originalX;
    }
    else if(demension.Equals("y"))
    {
        objectTransformScale.y = originalY;
    }
    else if(demension.Equals("z"))
    {
        objectTransformScale.z = originalZ;
    }
    else if (demension.Equals("a"))
    {
        objectTransformScale.z = originalZ;
        objectTransformScale.y = originalY;
        objectTransformScale.x = originalX;
    }
    //The scale of object won't be locked if I command the line below.
    objectTransform.localScale = objectTransformScale;
}

1 Ответ

0 голосов
/ 18 февраля 2019
objectTransformScale = Vector3(ref objectTransform.localScale);

Структуры являются типами значений, поэтому они просто передают данные, не включая ссылку на себя.Вы делали копию локального масштаба и редактировали копию.Использование ref в конструкторе гарантирует, что они связаны.

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