Перейти к содержимому

Как вставить картинку в unity 3d

  • автор:

Как загрузить картинку из 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#

  • 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), на плоскость накинуть
картинку в качестве текстуры.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *