[Unity Doc](https://docs.unity3d.com/ru/2021.1/Manual/script-AspectRatioFitter.html)
[Демонстрация](https://www.youtube.com/watch?v=UMYPiO_2VB8)
`AspectRatioFitter` — это компонент в Unity, который используется для того, чтобы Canvas-gameobject сохранял свое соотношение сторон независимо от размеров родителя.
Когда вы добавляете `AspectRatioFitter` к Canvas-gameobject с UI-компонентом, например, `Image`, у вас появляется возможность установить желаемое соотношение сторон. Вы можете выбрать различные режимы подстройки:
- **None**: Не применяет соотношение сторон.
- **WidthControlsHeight**: Ширина контролирует высоту.
- **HeightControlsWidth**: Высота контролирует ширину.
- **FitInParent**: Подгоняет объект так, чтобы он полностью уместился в родительском элементе, сохраняя соотношение сторон.
- **EnvelopeParent**: Растягивает объект так, чтобы он заполнил всю доступную область родительского элемента, сохраняя соотношение сторон.
### Пример использования
```csharp
// Пример добавления AspectRatioFitter через код
using UnityEngine;
using UnityEngine.UI;
public class AspectRatioFitterExample : MonoBehaviour
{
void Start()
{
// Получаем компонент Image на текущем GameObject
Image img = GetComponent<Image>();
// Добавляем AspectRatioFitter компонент
AspectRatioFitter arf = gameObject.AddComponent<AspectRatioFitter>();
// Устанавливаем соотношение сторон на основе изображения
arf.aspectRatio = img.sprite.rect.width / img.sprite.rect.height;
// Устанавливаем режим подстройки
arf.aspectMode = AspectRatioFitter.AspectMode.WidthControlsHeight;
}
}
```
### Производительность
`AspectRatioFitter` обычно не должен создавать значительных проблем с производительностью, так как он просто изменяет размеры объекта на основе уже имеющейся информации. Однако, если у вас много элементов UI, которым нужно динамически менять размер, следует провести тесты производительности.