Как загрузить картинку из Resourses в объект на сцене в UNITY?
Имеется GameObject c именем 222 , с компонентом SpriteRenderer .
В скрипте, активируемом по нажатии кнопки, следующее:
GameObject.Find ("222").GetComponent ().sprite = Resources.Load("Logo/ATL"); //Logo - папка в ресурсах, соответственно.
В компонент gameobject сохраняется спрайт, но нигде не отображается на сцене. Подскажите, пожалуйста, в чем я ошибся?
Отслеживать
2,280 2 2 золотых знака 17 17 серебряных знаков 30 30 бронзовых знаков
задан 2 авг 2018 в 21:41
1 1 1 бронзовый знак
GameObject.Find («222»).GetComponent ().sprite — такой код даже компилироваться не будет, потому что метод GetComponent имеет обязательный параметр типа. Возможно вы неправильно скопировали код в свой вопрос?
2 авг 2018 в 21:46
прежде чем задать вопрос, посетите сайт с документацией. Вот пример использование вашего метода: boxCol = otherGameObject.GetComponent
2 авг 2018 в 22:09
1 ответ 1
Сортировка: Сброс на вариант по умолчанию

Я считаю, что лучше не мудрить и не умещать всё в одну строчку.
Разумней создать префаб со спрайтом. В картинке надо изменить тип текстуры на Sprite:
Затем можно просто перетащить картинку на сцену (будет создан объект-sprite), а потом, создав в проекте префаб, присвоить ему этот объект.
Ну а далее дело за малым:
GameObject twotwotwo; void Start() < twotwotwo = (GameObject)Instantiate(Resources.Load("ATL-Prefab")); // . ну и тут ты делаешь то, что тебе надо. >
У меня всё заработало.
С Resources.Load() не знаю, как быть. У меня возникает ошибка «InvalidCastException: Cannot cast from source type to destination type.», и у меня тоже ничего нет. Так что, я считаю, лучше использовать префабы; они работают.
Как вставить картинку с сохранением её изначальных параметров?
Начал делать пролистывание карты и заметил, что изображение какое-то слишком размытое, но в оригинале выглядит хорошо, пробовал менять размер, но всё безуспешно, как перебросить изображение с сохранением размера и четкости?
- Вопрос задан более трёх лет назад
- 54 просмотра
Комментировать
Решения вопроса 0
Ответы на вопрос 0
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- C#
- +1 ещё
Как проверять столкновение префаба и UI панели в Unity?
- 1 подписчик
- 3 часа назад
- 17 просмотров
Unity UI. Image

Изображения (Image) не менее важный элемент UI, чем Text. Официальная документация описывает этот элемент так: «Элемент Image отображает пользователю не интерактивное изображение».
Так что и мы будем его использовать не только для отображения каких-то картинок, иконок, но и как фоны для других элементов UI.
Добавляем Image
Продолжаем предыдущий проект, и к нашему тексту докинем Image.

И у вас появилась вот такая вот белая фигня:

Это и есть Image. Просто пока у неё нет никаких ресурсов для отображения.

Как и у Text картинка имеет Rect Transform, который позволит отрегулировать положение и размеры. Есть ещё Image, который даст работать с самим изображением.
Так как в проекте пока не было никаких графических ресурсов, то нужно их добавить. Создадим папку Sprites и закидываем туда свой спрайт. Я взял вот такую вот иконку из пака, который я покупал на Humble Bundle (вроде).


Что важно, убедитесь, что добавленное изображение получило тип Sprite, иначе использовать его в Image не выйдет. Sprite Mode: Single значит, что у нас это одна текстурка, самостоятельная. Если будем использовать атлас спрайтов, то поставим Multiple, но про это в другой раз.

И теперь перетаскиваем свой спрайт в поле Source Image (или выбираем в диалоговом окошке):

И результат вот:

Ещё мы можем указать цвет картинки просто изменяя параметр Color.

С чёрными картинками это работать не будет, тогда как белые можно полностью закрасить каким-то цветом. Это можно использовать для экономии ресурсов и времени. Вместо создания трёх однообразных иконок можно создать одну, а потом заливать её разными цветами.
Image Type
Это простой и достаточно полезный инструмент. В компоненте Image вы можете найти выпадающий список с именем Image Type. По умолчанию стоит Simple. Это значит, что мы просто выводим картинку.
Tiled позволяет делать вот так, т.е. заполняет этой картинкой указанную область:

Пример неудачный, но, например, таким образом можно было бы сделать фон с землёй как в Minecraft.
Filled – самый интересный вариант, так как с его помощью можно отрегулировать часть видимой картинки. Например, это можно использовать как отображение прогресса достижения или задания, а ещё такое часто можно увидеть, как отсчёт каких-то навыков в играх:


Варианты алгоритма выбора области есть:

А Sliced нужен для правильного отображения рамок, и сейчас его показать не выйдет, так как спрайт не совсем о том. Так что докинем ещё один спрайт, в этот раз для UI.
Я взял такую вот кнопку из этих ресурсов.

Оставляем параметры спрайта аналогичные первому и добавляем на экран парочку новых Image.
Спрайтом укажем кнопку, но размеры сделаем разными. Я поставлю высоту по 50, а ширину 200 и 400. В результате получаем такое вот:

Красивым я это не назову, ведь рамка спрайта явно поплыла. Вот тут-то нам и поможет Sliced. Выбираем большую кнопку и указываем Sliced. Unity подскажет, что у спрайта ещё нет рамки:

Так что нажимаем на сам спрайт кнопки (не Image!), выбираем Sprite Editor

И уже в редакторе спрайтов, путём перетягивания зелёной рамки, отступаем область, которую не нужно растягивать.

Жмём Apply и смотрим на результат:

Для большей наглядность даже можно сделать их размер одинаковым:

Вот, что делает тип Sliced.
Ещё стоит упомянуть компонент Raw Image. Если обычный принимает только спрайты, то Raw принимает любые текстуры. Но её лучше использовать только тогда, когда обычный по каким-то причинам не подходит. В остальном с большинством задач справляется и просто Image.
Компоненты модификаторы, которые я показывал в статье с Text, работают и с Image!

А на этом сегодня всё. Дальше добавим кнопки, в которых будет своего рода комбинация того, что мы уже узнали, а также много нового.
Как в Unity в сцену добавить картинку?
Суть такова: делаю AR с помощью Vuforia, нужно, чтобы при наведении камеры на таргет появлялось изображение, совмещённое с таргетом, перемещаться с ним, соответственно. Но Unity не хочет вставлять картинку, только если как элемент UI, но тогда она будет статично висеть на экране и не двигаться. С готовыми ассетами всё работает. Можно ли как-то сделать из картинки GameObject или что-нибудь такое?
Голосование за лучший ответ
В качестве GameObject создать плоскость (plane), на плоскость накинуть
картинку в качестве текстуры.