Я сохраняю пропорции спрайта всегда при перемещении его по оси Z (с курсором) в Game View.Мой код
float dist = ((Camera.main.transform.position - mySprite.transform.position).magnitude);
float startSize = Mathf.Abs(1 / Camera.main.transform.position.z);
Vector3 realScale = myDict[mySprite.name];
dim = new Vector3((dist * realScale.x), (dist * realScale.y), (dist * realScale.z)) * startSize;
mySprite.transform.localScale = dim;
(Так как localScale объекта можно изменить при редактировании сцены, я сохраняю его значения перед входом в Game View, помещая их в словарь myDict.) В настоящее время я не использую этот код в Update, ноЯ звоню по кнопке редактора.Сначала казалось, что это работает хорошо, но потом я понял, что на самом деле это не точно.Я сделал несколько тестов, вырезав изображения из фона и превратив их в спрайты.Спрайт, наложенный на исходное изображение, всегда немного больше.Я мог бы умножить значения Scale на константу, но мне это не кажется правильным.Вы можете направить меня?