[Doc Unity](https://docs.unity3d.com/2021.3/Documentation/Manual/script-Image.html)
Компонент Image в Unity используется для отображения изображений в интерфейсе пользователя (UI).
Вот список полей, которые вы увидите в инспекторе, когда выберете объект с компонентом Image:
1. **Source Image**: Здесь вы можете выбрать спрайт или текстуру, которая будет отображаться на объекте. Обычно это текстура в формате PNG или JPG.
2. **Color**: Это поле позволяет изменить цвет объекта Image, влияя на его прозрачность и насыщенность. Вы можете использовать это поле, чтобы легко изменить цвет или прозрачность изображения.
3. **Material**: Здесь вы можете назначить материал для изображения. Материалы позволяют применять шейдеры и другие эффекты к объекту Image.
4. **Raycast Target**: Этот флажок определяет, будет ли объект Image участвовать в системе рейкастинга пользовательского интерфейса. Если флажок установлен, объект будет реагировать на нажатия и события мыши или сенсорного экрана. Я выключил это значение у кнопки. Кнопка перестала нажиматься.
5. **Maskable**: Этот параметр определяет, должен ли данный компонент Image подвергаться маскированию при использовании вместе с компонентом Mask или RectMask2D на родительском объекте. Если этот флажок установлен, изображение будет обрезано или затемнено в соответствии с настройками маски на родительском объекте.
6. **Image Type**: Это поле позволяет выбрать тип объекта Image из следующих вариантов:
- Simple: Отображает изображение без изменений.
- Sliced: Используется для 9-сегментных спрайтов, которые могут быть растянуты без искажений. Необходимо настроить границы в спрайте перед использованием этого типа.
- Tiled: Заполняет объект повторяющимся изображением, создавая эффект плитки.
- Filled: Заполняет объект изображением в зависимости от значения Fill Amount. Может быть использовано для создания прогресс-баров или индикаторов загрузки.
8. **Preserve Aspect**: Этот флажок позволяет сохранить соотношение сторон исходного изображения, когда его размеры изменяются. Если флажок установлен, изображение будет масштабироваться таким образом, чтобы его соотношение сторон оставалось постоянным, предотвращая искажения.
9. **Fill Method**: Это поле доступно, если выбран тип Image "Filled". Здесь вы можете выбрать метод заполнения из следующих вариантов: Horizontal, Vertical, Radial 90, Radial 180 и Radial 360.
10. **Fill Origin**: Это поле определяет начальную точку заполнения изображения. Доступно только для типа Image "Filled".
11. **Fill Amount** (продолжение): Это поле определяет процент заполнения объекта изображения. Значение может варьироваться от 0 (пусто) до 1 (полностью заполнено). Доступно только для типа Image "Filled".
12. **Fill Clockwise**: Этот флажок определяет, будет ли заполнение изображения происходить по часовой стрелке или против часовой стрелки. Доступно только для типа Image "Filled".
13. **Fill Center**: Этот параметр определяет, следует ли заливать центральную часть спрайта при использовании режима Image Type "Sliced" или "Tiled". Если этот флажок установлен, центральная часть спрайта будет заливаться или повторяться в зависимости от выбранного режима. Если флажок снят, центральная часть спрайта будет пропущена, и только границы спрайта будут видны.
Зачастую этот параметр используется с 9-сегментными спрайтами, где у спрайта есть четыре угла, четыре края и центральная часть. В таких случаях установка этого флажка позволяет контролировать, нужно ли заполнять центральную часть спрайта или оставить ее прозрачной.
14. **Pixels Per Unit Multiplier**: Этот параметр определяет множитель для значения Pixels Per Unit спрайта. Значение Pixels Per Unit указывает, сколько пикселей спрайта соответствует одной единице в Unity. Множитель позволяет увеличить или уменьшить размер спрайта в Image относительно его значения Pixels Per Unit.
Например, если у спрайта значение Pixels Per Unit равно 100 и множитель равен 2, то спрайт будет в два раза больше по размеру, чем если бы значение множителя было равно 1. Меняя этот множитель, вы можете легко масштабировать спрайт, не меняя его исходных размеров в графическом редакторе или значения Pixels Per Unit на самом спрайте.
В зависимости от типа Image и других настроек, некоторые из этих полей могут быть неактивными или недоступными. Обратите внимание, что эти поля и их значения могут влиять на внешний вид и поведение объекта Image, поэтому имеет смысл экспериментировать с разными настройками, чтобы найти оптимальное решение для вашего проекта.
### Поле Raycast Target как-то связан с Physics.raycast?
Поле Raycast Target в компоненте Image и метод Physics.Raycast связаны в том смысле, что оба используются для определения столкновений и взаимодействия с объектами, однако они предназначены для разных целей и работают в разных контекстах.
Raycast Target в компоненте Image относится к системе пользовательского интерфейса (UI) в Unity. Если флажок Raycast Target установлен, это означает, что объект Image будет реагировать на взаимодействие, такое как нажатия кнопок мыши или касания экрана. Система UI в Unity использует собственный рейкастинг, основанный на компоненте Graphic Raycaster, который определяет столкновения с элементами интерфейса пользователя.
Physics.Raycast, с другой стороны, является методом, используемым в 3D-мире Unity для определения столкновений между лучами и коллайдерами на 3D-объектах. Он не предназначен для использования с элементами пользовательского интерфейса и работает в контексте физической системы Unity.
В целом, Raycast Target и Physics.Raycast связаны понятием рейкастинга, но они работают в разных системах и предназначены для разных целей. Raycast Target используется для взаимодействия с UI-элементами, в то время как Physics.Raycast используется для определения столкновений и взаимодействия с 3D-объектами в игровом мире.
### Image класс
[Doc Unity](https://docs.unity3d.com/2018.2/Documentation/ScriptReference/UI.Image.html)
Как создать параметр в инспекторе с данным классом, чтобы вызывать перечисленные ниже мемберы.
```csharp
[SerializeField] public Image **image**;
```
Свойство хранит файл-изображение. Менять картинку у gameobject через него.
```csharp
public Sprite sprite { get; set; }
```
Cвойство определяет, будет ли UI-gameobject участвовать в системе рейкастинга.
```csharp
public bool raycastTarget { get; set; }
```
Если raycastTarget установлено в true, то UI-gameobject будет реагировать на события ввода, такие как нажатия кнопок мыши или касания на сенсорном экране.
Другими словами, рейкастеры будут учитывать этот объект при определении, на какой объект нажал пользователь.
Если raycastTarget установлено в false, то объект Image не будет реагировать на события ввода, и рейкастеры будут "пропускать" этот объект, как будто его там не существует. Это может быть полезно в случаях, когда вы не хотите, чтобы данный объект реагировал на ввод, например, в ситуации, когда объект Image используется только для отображения фоновой графики.
Важно отметить, что это свойство влияет только на рейкастинг, а не на само отображение объекта. Объект Image будет отображаться на экране, независимо от значения raycastTarget.