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

от admin

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

Получилось поменять цвет объекта на синий при клике. Но не понял как менять спрайт.

Кажется в руководстве это описывается здесь

А я не силен в английском

Жалгас Ажибаев's user avatar

hit.collider.GetComponent().sprite = //? что сюда написать

Собственно с правой стороны надо дать объект типа Sprite.

А каким способом он там окажется уже без разницы. Например самый стандартный способ это указать публичное поле с таким типом

потом в редакторе в это поле положить спрайт, а уже в той строке выше присвоить полю. поле))

А в примере по ссылке указывается, как можно загрузить спрайт из ресурсов и далее этот самый спрайт (точнее один спрайт из массива) вставляется в GetComponent<SpriteRenderer>().sprite .

Как заменить спрайт в единстве на другой?

Хорошо, я делал 2d платформер и получил ужасное изображение / спрайт для моего плеера. Теперь у меня есть лучший вариант, и я хочу просто заменить изображения, но сохранить все те же значения, данные / сценарии и т. Д.

Некоторое время я пытался понять это, но безуспешно. Спасибо за любую помощь

2 ответа

Если вы хотите навсегда изменить спрайт в ваших префабах / объектах, вы можете перетащить новый спрайт из папки с ресурсами в компонент «Sprite Renderer» объекта, который вы хотите изменить, заменив все, что в настоящее время находится в поле спрайта. Посмотрите это изображение, чтобы увидеть, куда вы хотите перетащить спрайт:

enter image description here

Вы можете изменить его через скрипт, используя публичную переменную:

Один из способов сделать это, не уверен, что это лучший способ, но он работает, — это: — импортировать ваш новый Sprite (назовем его SpriteB) — выбрать GameObject, в котором вы использовали свой первый спрайт (SpriteA) — в поле » Sprite Renderer «выбранного GameObject замените» Sprite = SpriteA «новым спрайтом, чтобы» Sprite = SpriteB «

Очевидно, вам придется повторить операцию для каждого GameObject, где вы могли использовать SpriteA.

Создание спрайтов

С помощью этого инструмента вы можете создавать временные заполнители sprite двухмерных графических объектов. Если вы привыкли работать в 3D, спрайты — это, по сути, просто стандартные текстуры, но существуют специальные приемы комбинирования текстур спрайтов и управления ими для повышения эффективности и удобства во время разработки. Подробнее
См. Словарь (2D) графика. Вы можете использовать их в своем проекте во время разработки, а затем заменить их графикой, которую хотите использовать.

Доступ к Создателю спрайтов

Выберите Ресурсы>Создать>Спрайты, а затем выберите спрайт-заполнитель, который вы хотите создать (квадрат, треугольник, ромб, шестиугольник или многоугольник).

Доступ к Создателю спрайтовДоступ к Создателю спрайтов

Использование спрайта

Ваш новый спрайт-заполнитель отображается в виде белой фигуры в папке активов, которая в данный момент открыта. Имя нового спрайта по умолчанию совпадает с именем формы, но у вас есть возможность переименовать свой спрайт при его первом создании. Если вы не уверены, как хотите его назвать, оставьте его по умолчанию; вы можете изменить его позже, нажав на него.

Назовите свой новый спрайт (или оставьте его по умолчанию)Назовите свой новый спрайт (или оставьте его по умолчанию)

Вы можете перетащить спрайт-заполнитель в Просмотр сцены Интерактивное представление мира, который вы создаете. Вы используете Scene View для выбора и размещения пейзажей, персонажей, камер, источников света и всех других типов игровых объектов. Дополнительная информация
См. в Словарь или Иерархия, чтобы начать его использовать в вашем проекте.

Перетащите спрайт-заполнитель в представление сцены.Перетащите спрайт-заполнитель в представление сцены.

Замена спрайта-заполнителя

Чтобы изменить спрайт-заполнитель, нажмите на него в Просмотре сцены, а затем отредактируйте с помощью Компонента визуализации спрайтов в Инспектор Окно Unity, в котором отображается информация о текущем выбранном игровом объекте, активе или настройках проекта, что позволяет вам проверять и редактировать значения. More info
See in Словарь .

Замените свой спрайт с помощью компонента Sprite Renderer в инструменте Inspector.Замените свой спрайт с помощью компонента Sprite Renderer в инструменте Inspector.

Редактировать поле Спрайт: вы можете щелкнуть маленький кружок справа от поля ввода, чтобы открыть Выбор спрайтов, где вы можете просматривать и выбирать из меню доступных 2D-графических ресурсов.

Читать:
Сколько слов будет найдено

Селектор спрайтовСелектор спрайтов

How To Change Sprites Colour Or Transparency – Unity C#

If you’ve ever wanted to write a script that could make your sprite flash a different colour or turn them transparent in Unity, there’s an easy way. I did this in various ways in my game Puzzledorf. One example is the fireworks that explode when you do something right:

Or making the Press Any Key text fade in and out on the Titlescreen, or the fading button highlights on the menus:

Sprite Renderer

You’re sprite is contained in a component called the Sprite Renderer.

Sprite Renderer

Now if you click on “Color”, you can manually change the sprites transparency in the colour changer by turning alpha down to 0, or tint the sprite by modifying how much red, blue and green is in the image.

Color Changer

Confusingly, if it’s set to all white, the sprite is its normal colour, while all black will make the sprite black. You’ll notice also that the colours range from 0 to 255, with 0 being no colour and 255 being full colour.

Now unfortunately if you turn blue and green off, the sprite won’t be all red, just tinted red. If you want to completely change colours, you’ll have to start with a white sprite, otherwise it will just tint.

Coding Colour Changes

To change the colour in a script, you will need to get the Sprite Renderer in your code, and then we can easily change it’s color property. (Color is the American spelling whereas colour is the Australian spelling).

Create a scene with a game object that has a sprite renderer / sprite attached. Then create a new script called ColourChange and add the following code:

The very first thing we do is create a variable to store the Sprite Renderer, and we call this sprite. Then in Start() we get the component for the Sprite Renderer, so this way we can access it’s color property. If your sprite is in a child game object of where you attached this script, instead of GetComponent, use GetComponentInChildren like this:

Now in Update() we first of all check to see if the key C is being pressed on the keyboard. If you’re confused with how that works, read the Unity documentation on it here; it’s helpful.

Then we change the color property of our Sprite Renderer by creating a new Color. This literally just means we’re changing those same colour properties from earlier, but with code. It looks like this:

Confusingly, instead of being a value between 0 and 255, like it was in the editors colour changer, now we have to give it a value between 0 and 1 for each colour property, 0 being no colour, 1 being full colour for that property.

So in other words, if you run your game and test it now, it will tint your sprite red, because we told it to be:

  • Full Red
  • No Green
  • No Blue
  • Fully Visible

Likewise if we changed our colour property like this:

It would tint our sprite green. Try it.

Then if you did this:

sprite.color = new Color (1, 1, 1, 0);

Your sprite would be its normal colour, but it would be transparent, because we turned the alpha all of the way down. So that’s a nice way to make your sprite invisible, but still enabled.

You should be able to use this to create some nice effects in your games now like a character flashing when it’s hurt.

Join the Discord. Talk about Game Dev. Talk about Gaming.

Related Posts