Как поменять спрайт объекта unity через скрипт
Перейти к содержимому

Как поменять спрайт объекта unity через скрипт

  • автор:

Как изменить изображение в спрайте?

Как изменить изображение в спрайте не создавая новый спрайт?

Проблема в том, что когда я таким образом заменяю спрайт то сетка пропадает.

#1
19:12, 22 мая 2022

Можно код замены?

#2
23:58, 22 мая 2022

Есть Image у него есть свойство sprite (или не свойство, не знаю как правильно называется но не суть)
И меняется по средствам: Image.sprite = NewSprite

Создать переменную public Image MyImage (Будет простая белая картинка)
Поместить на канвас новый объект: UI>Image
Переместить в инспекторе этот объект в поле переменной MyImage
Создать пару переменных содержащих спрайты:
public Sprite MySprite;
public Sprite MyNewSprite;
Заполнить их в инспекторе перетащив необходимые спрайты
далее можно будет присваивать при необходимости как хотите:

MyImage.sprite = MySprite;
или когда будет нужно
MyImage.sprite = MyNewSprite;

Спрайт сам по себе не существует, если его поместить на сцену, то предварительно будет нужно найти у этого помещенного на сцену спрайта ссылку компонент SpriteRenderer и потом уже присваивать через .sprite новый спрайт.

(Надеюсь понятно объяснил)

* Какая сетка пропадает не очень понял.

Как сделать смену спрайта в Unity?

Всем добра! Нужна помощь! Начал обучаться Unity и встрял с первым заданием. Есть три кнопки (Камень, Ножницы, Бумага) и есть некий невидимы GameObject. Нужно сделать так чтобы при нажатии на кнопку объект менял свой Sprite на тот что лежит в заранее заготовленной папке. Просмотрел уйму видео. и не могу понять как сделать. Пожалуйста подскажите!

public class Button : MonoBehaviour < public Sprite Button_stn, Button_scs, Button_pap, GameObj; public void Button_stn_cl() < GameObj = Resources.Load("1") as Sprite; >public void Button_scs_cl() < GameObj = Resources.Load("2") as Sprite; >public void Button_pap_cl() < GameObj = Resources.Load("3") as Sprite; >public void Game_object() < GetComponent().sprite = GameObj; > void Start()
  • Вопрос задан более двух лет назад
  • 1015 просмотров

1 комментарий

Простой 1 комментарий

Casper-SC

Ключевое слово as нужно использовать, только если далее будет проверка на null и в принципе ожидается, что приведение к типу может не сработать. В противном случае нужно писать как показано ниже, чтобы сразу же было сгенерировано исключение и программист понял, что допустил ошибку. Ключевое слово as существует не для красоты написания кода (лично мне кажется, что приведение с as выглядит красивее).
GameObj = (Sprite)Resources.Load(«3»);

Решения вопроса 0
Ответы на вопрос 1

d1msk1y

Начинающий инди разработчик на юнити

нужна ссылка на спрайт рендерер и на сами спрайты.
public SpriteRenderer sr;
public Sprite[] sprites //Массив из спрайтов
закидывайте все спрайты в массив.и указываете нужный спрайт в спрайт рендерере.
sr.sprite = sprites[«Нужный спрайт»];

Как поменять спрайт у объекта с помощью запоминанияPlayerprefs?

Ну я создал «магазин» со скинами, у каждого скина есть свой индех и я его запоминаю. На другой сцене есть Игрок у которого должен поменяться скин, но он не меняется, код ошибки не выдает. Что делать?

  • Вопрос задан более двух лет назад
  • 53 просмотра

2 комментария

Средний 2 комментария

K0TlK

Молиться. Приложите код, который меняет скин персонажа и код, который сохраняет индексы скинов. Без понимания того, как у вас все реализовано, невозможно дать нормальный ответ.

Как изменить спрайт объекта кодом Unity

Если скрипт навешан на сам объект со спрайтом то так, если нет то немного иначе:
и в зависимости от того какой у тебя компонент. Это может быть панель, картинка, спрайт рендерер, но думаю у тебя это будет картинка.

Для спрайта как то так:
SpriteRenderer sprite = GetComponent < Sprite Renderer >();
sprite.Sprite(Resource.Load(«путь до спрайта», typeof(Sprite)) as Sprite); // Спрайт должен быть внутри папки Resources. Ее необходимо создать.

Для картинки
Image img = GetComponent < Sprite Renderer >();
img.sourceImage(Resource.Load(«путь до спрайта», typeof(Sprite)) as Sprite);

В общем суть наверное уловил. Я могу также ошибаться в том что Sprite это метод а не свойство, но это будет понятно в редакторе кода.

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

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