Spriterenderer unity что это
Перейти к содержимому

Spriterenderer unity что это

  • автор:

Sprite Renderer

The Sprite Renderer component renders the Sprite A 2D graphic objects. If you are used to working in 3D, Sprites are essentially just standard textures but there are special techniques for combining and managing sprite textures for efficiency and convenience during development. More info
See in Glossary and controls how it visually appears in a Scene A Scene contains the environments and menus of your game. Think of each unique Scene file as a unique level. In each Scene, you place your environments, obstacles, and decorations, essentially designing and building your game in pieces. More info
See in Glossary for both 2D and 3D projects.

When you create a Sprite (GameObject > 2D Object > Sprite), Unity automatically creates a GameObject with the Sprite Renderer component attached. You can also add the component to an existing GameObject via the Components A functional part of a GameObject. A GameObject can contain any number of components. Unity has many built-in components, and you can create your own by writing scripts that inherit from MonoBehaviour. More info
See in Glossary menu (Component > Rendering > Sprite Renderer).

Properties

Sprite Renderer Inspector

Property Function
Sprite Define which Sprite texture the component should render. Click the small dot to the right to open the object picker window, and select from the list of available Sprite Assets.
Color Define the vertex color of the Sprite, which tints or recolors the Sprite’s image. Use the color picker to set the vertex color of the rendered Sprite texture. See the Color section below this table for examples.
Flip Flips the Sprite texture along the checked axis. This does not flip the Transform position of the GameObject The fundamental object in Unity scenes, which can represent characters, props, scenery, cameras, waypoints, and more. A GameObject’s functionality is defined by the Components attached to it. More info
See in Glossary .
Material An asset that defines how a surface should be rendered. More info
See in Glossary
Define the Material used to render the Sprite texture.
Draw Mode Define how the Sprite scales when its dimensions change. Select one of the following options from the drop-down box.
Simple The entire image scales when its dimensions change. This is the default option.
Sliced Select this mode if the Sprite is 9-sliced.
Size (‘Sliced’ or ‘Tiled’) Enter the Sprite’s new Width and Height to scale the 9-sliced Sprite correctly. You can also use the Rect Transform Tool to scale the Sprite while applying 9-slicing properties.
Tiled By default, this mode causes the middle of the 9-Sliced Sprite to tile instead of scale when its dimensions change. Use Tile Mode to control the tiling behavior of the Sprite.
Continuous This is the default Tile Mode. In Continuous mode, the midsection tiles evenly when the Sprite dimensions change.
Adaptive In Adaptive mode, the Sprite texture stretches when its dimensions change, similar to Simple mode. When the scale of the changed dimensions meets the Stretch Value, the midsection begins to tile.
Stretch Value Use the slider to set the value between 0 and 1. The maximum value is 1, which represents double the original Sprite’s scale.
Sorting Layer Set the Sorting Layer of the Sprite, which controls its priority during rendering. Select an existing Sorting Layer from the drop-down box, or create a new Sorting Layer.
Order In Layer Set the render priority of the Sprite within its Sorting Layer. Lower numbered Sprites are rendered first, with higher numbered Sprites overlapping those below.
Mask Interaction Set how the Sprite Renderer behaves when interacting with a Sprite Mask A texture which defines which areas of an underlying image to reveal or hide. More info
See in Glossary . See examples of the different options in the Mask Interaction section below.
None The Sprite Renderer does not interact with any Sprite Masks in the Scene. This is the default option.
Visible Inside Mask The Sprite is visible where the Sprite Mask overlays it, but not outside of it.
Visible Outside Mask The Sprite is visible outside of the Sprite Mask, but not inside it. The Sprite Mask hides the sections of the Sprite it overlays.
Sprite Sort Point Choose between the Sprite’s Center or its Pivot Point when calculating the distance between the Sprite and the camera A component which creates an image of a particular viewpoint in your scene. The output is either drawn to the screen or captured as a texture. More info
See in Glossary . See the section on Sprite Sort Point for further details.

Details

Color

The image below demonstrates the effect of changing the RGB values on the Sprite Renderer’s Color setting. To change a Sprite’s opacity, change the value of its Color property’s Alpha (A) channel.

Left: The original Sprite. Right: The Sprite with its RGB colors set to red.

Material

Use a Material’s Material and Shader settings to control how Unity renders it. Refer to Materials, Shaders & Textures for further information on these settings.

The default Material for newly created Sprites is Sprites — Default. Scene lighting does not affect this default Sprite. To have the Sprite react to lighting, assign the Material Default — Diffuse instead. To do this, click the small circle next to the Material field to bring up the object picker window, and select the Default-Diffuse Material.

Mask Interaction

Mask Interaction controls how the Sprite Renderer interacts with Sprite Masks. Select either Visible Inside Mask or Visible Outside Mask from the drop-down menu. The examples below demonstrate the effect of each option with a square Sprite and a circle Mask:

To interact with a Sprite Mask, select Visible Inside Mask or Visible Outside Mask from the drop-down menu.

With Visible Inside Mask With Visible Outside Mask

Sprite Sort Point

This property is only available when the Sprite Renderer’s Draw Mode is set to Simple.

In a 2D project, the Main Camera is set to Orthographic Projection mode by default. In this mode, Unity renders Sprites in the order of their distance to the camera, along the direction of the Camera’s view.

Orthographic Camera: Side view (top) and Game view (bottom)

By default, a Sprite’s Sort Point is set to its Center, and Unity measures the distance between the camera’s Transform position and the Center of the Sprite to determine their render order.

To set to a different Sort Point from the Center, select the Pivot option. Edit the Sprite’s Pivot position in the Sprite Editor.

  • 2018–10–05 Added definition for new functionality.
  • Ability to sort Sprite-based renderers using the pivot position added in 2017.3 New in 2017.3

Проблема со sprite renderer в Unity 2D

Я создал объект Hero и в него засунул sprite, но в этой строчке кода sprite = GetComponentInChildren(); он обращается к sprite renderer внутри Hero, не к спрайту внутри объекта Hero. Как это исправить? (Я новичок в Unity)

Отслеживать
задан 5 июн 2021 в 6:55
user442003 user442003
А документация для слабаков?
5 июн 2021 в 6:59
5 июн 2021 в 11:06

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

sprite = GetComponent().sprite; 

Отслеживать
ответ дан 5 июн 2021 в 7:00
Алексей Шиманский Алексей Шиманский
71.1k 12 12 золотых знаков 90 90 серебряных знаков 180 180 бронзовых знаков

@Danii а зачем тогда вы что-то пытаетесь положить в sprite? lХотя на самом деле нужно из этого что-то вынуть? Где логика. sprite.GetComponent()

5 июн 2021 в 12:28

    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.10.27.43697

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Unity 2D: работа со спрайтами в разных разрешениях дисплея

Начиная с версии 4.3 в Unity появилась возможность работы с 2D графикой, большая часть новых стандартных решений мне пришлись по душе, потому что я как раз незадолго до этого обновления перешел с Corona SDK.
Но что меня не порадовало, так это отсутствие стандартных инструментов для оптимизации спрайтов под разные разрешения экранов, что имеет довольно таки существенное влияние на производительность на маломощных устройствах.

Конечно, можно использовать что-то похожее на 2D Toolkit для решения этой проблемы, но зачем платить 75$ если можно сделать все самому?

Cо слов пользователей официального форума Unity, разработчики в скором времени не планируют расширять 2D функционал, по крайней мере до релиза 5 версии Unity, и пока что пользователи должны самостоятельно решать данную проблему. Бороздя просторы интернета в надежде найти ответ, я набрел на интересный доклад одного из разработчиков Unity на летней Nordic Game Conference 2014, название говорит само за себя «2D issues and how to solve them». Пользуясь материалами этого доклада, я сделал свое решение проблемы поддержки дисплеев разного разрешения.

Для того чтобы начать, нам нужна только версия атласа спрайтов с самым высоким разрешением, остальные манипуляции с уменьшением качества атласов происходят внутри Unity.

Подготовка спрайтов

Итак, на первом этапе мы должны организовать атласы спрайтов для разных разрешений: SD, HD, ultra-HD, у нас же будут использованы суффиксы 1x, 2x, 4x.

Берем атлас спрайтов, в нашем случае это ’spritesheet1@4x.png’, в инспекторе выбираем нужные параметры, режем атлас в Sprite Editor, если требуется. Создаем еще две копии атласа в Project Browser (cmd+D, ctrl+D) и переименуем их так, чтобы суффиксы в названии были ‘@2x’, ‘@1x’, меняем свойство Max Size на значение в 2 и в 4 раза меньше соответственно.

Спрайты должны находится в папке Resources, если таковой не имеется — создайте. Это позволяет загружать файлы с этой папки во время выполнения программы.

Обращу Ваше внимание на поля Pixels Per Unit и Format, первое поможет подобрать размер спрайтов под размеры сцены без изменения scale, а второе является очень важным для правильной передачи цвета, размера билда и использования ресурсов графического процессора. На эту тему есть замечательный мануал

Подготовка префаба

Тут все просто, мы собираем игровой объект на основе атласа спрайтов с суффиксом ‘@2x’, добавляем анимацию и любые другие фишки, которые могут вам понадобится. Сохраняем объект как префаб.
Суффикс ‘@2x’ был выбран, потому что большая часть устройств имеют hd разрешение, нам не придется делать лишнюю работу в большинстве случаев.

Скрипт будет работать с любым количеством компонентов SpriteRenderer. Он не будет влиять ни на анимацию, ни на что другое, главное чтобы имена спрайтов в атласе и SpriteRenderer`е были одинаковыми. Данную особенность можно применять не только для смены разрешения спрайтов, но и для замены их на полностью другие, например при создании другого скина персонажа.

Основной принцип работы скрипта таков: у нас есть публичная переменная spriteSheet, в которой мы передаем имя атласа, в котором находятся спрайты нашего объекта.

С помощью метода GetQuality узнаем с каким дисплеем мы имеем дело (для моих целей было достаточно ориентироваться на высоту экрана).

Потом в методе ManageQuality, имея данные о разрешении экрана, загружаем в массив sprites все спрайты нужного нам атласа с правильным суффиксом. В массив renderers загружаем все компоненты SpriteRenderer, которые находятся в объекте. Ищем в массиве sprites спрайт по имени и присваиваем его спрайту компонента SpriteRenderer, если такой существует. Завершает все Resources.UnloadUnusedAssets (), этот метод выгружает из памяти неиспользуемые ассеты.

Тут находится скрипт

using UnityEngine; using System.Collections; using System; public class ConstObjectsQuality : MonoBehaviour < public string spriteSheet; private string qSuffix; void Awake()< qSuffix = GetQuality (); ManageQuality (); >private string GetQuality() < int screenH = Screen.height; print (screenH); if (screenH >1440) return "4x"; else if (screenH < 720) return "1x"; else return "2x"; >private void ManageQuality()< if (qSuffix == "1x" || qSuffix == "4x") < Sprite[] sprites = Resources.LoadAll(spriteSheet + "@" + qSuffix); if (sprites != null) < SpriteRenderer[] renderers = GetComponentsInChildren(true); if (renderers.Length > 0) < foreach (SpriteRenderer r in renderers) < if (r.name != null)< string spriteName = r.sprite.name; Sprite newSprite = Array.Find(sprites, item =>item.name == spriteName); if (newSprite) r.sprite = newSprite; > > > > > Resources.UnloadUnusedAssets (); > > 

Также этот скрипт можно использовать для изменения всех спрайтов в сцене. Для этого создаем новый объект, например SpriteManager, и добавляем к нему данный скрипт, но с измененным определением массива renderers:

SpriteRenderer[] renderers = GameObject.FindObjectsOfType(); 

Что такое Sprite Renderer?

затонувший

Sprite Renderer также требуется для разработки 2D-проектов. Он определяет рендеринг спрайтов. Это можно использовать, например, для создания иллюзии глубины в 2D-играх.

Что такое Sprite Renderer?

Средство визуализации спрайтов является очень важным компонентом при разработке 2D-проектов, поскольку оно определяет способ визуализации спрайта. Это важный компонент системы тайловых карт для правильной работы настроек.

Добавить средство визуализации спрайтов

Если вы работаете в 2D-сцене, Sprite Renderer очень важен, потому что он позволяет отображать изображения как Sprite. Это также можно использовать для 3D-проектов.

Добавьте новый игровой компонент или GameObject с помощью Add Component. Перейдите в меню «Компоненты» и выберите «Компонент -> Рендеринг -> Sprite Renderer».

Средство визуализации спрайтов

Вы также можете добавить GameObject, у которого уже есть Sprite Renderer:
GameObject–> 2D Object–> Sprite

GameObject с Sprite Renderer

Вы добавляете компонент, который уже прикреплен к GameObject. Это позволяет вам настраивать параметры для управления отрисовкой GameObject.

Добавьте еще два GameObject в свою сцену и убедитесь, что у них обоих есть средство визуализации спрайтов.

Отсюда вы можете увидеть два GameObject, оба из которых имеют рендерер спрайтов. Мы используем Sprite Renderer, чтобы настроить реакцию Sprite и двух GameObject. Поэтому давайте рассмотрим параметры, которые можно установить в Sprite Renderer.

Настройки для Sprite Renderer

Выберите объект Sprite GameObject, который вы видите. Вы будете следовать Настройки доступно для изменения средства визуализации спрайтов:

Настройки рендерера спрайтов

Спрайт: Визуализируемый спрайт: объекты Sprite могут быть сгенерированы из текстур, задав настройки Sprite во время импорта или создав их с помощью инструмента Sprite Editor Tool. Вы добавляете сюда спрайт для рендеринга.

Цвет: Цвета визуализированной сетки для спрайта: этот параметр полезен для настройки цвета спрайта.

Пример топливной краски

Search the Настройки спрайтаn и с помощью перетаскивания добавьте спрайт, который вы хотите использовать для объекта:

Кувырок: Это отразит спрайт в плоскости x или y и эффективно отразит спрайт.

Вот зеркальное отображение по оси X:

Отразить X

Здесь вы зеркалируете по оси Y:

Отразить Y

Здесь вы одновременно зеркалируете оси X и Y:

Перевернуть X и Y

Состав: это материал, который будет использоваться для спрайта: он полезен, если у вас есть определенные материалы, которые вы хотите, чтобы спрайт отображал.

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

Слой сортировки: Это уровень, который определяет приоритет наложения спрайтов при рендеринге. Вкратце: есть ли пингвин перед иглу или за ним? Вы определяете уровни для спрайта.

Порядок в слое: Приоритет наложения спрайта внутри его собственного слоя. Меньшие числа отображаются первыми, а последующие числа накладываются на те, что ниже. Это полезно, когда у вас есть конкретный спрайт, который вы хотите спрятать за другими спрайтами на том же уровне. Он имеет функцию, аналогичную сортировочному слою.

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

Нажми на Режим рисования из Sprite Renderer, чтобы получить дополнительные настройки.

Режим рисования

Простой: Этот параметр влияет на масштаб изображения во всех направлениях при изменении его размера.

Кусочки: Используйте эту опцию, если вы создаете спрайт с 9 частями и хотите увеличить эти разделы. В этом режиме углы остаются того же размера, а верх и низ могут расширяться по горизонтали. Стороны спрайта увеличиваются по вертикали, а центр уже изменяется по горизонтали и вертикали, чтобы соответствовать размеру спрайта.

Плиточный: Используйте эту опцию, если вы используете спрайт с 9 частями и хотите, чтобы разделы повторялись. В этом режиме размер спрайта остается прежним и не масштабируется. Вместо этого верх и низ спрайта повторяются по горизонтали, а сторона повторяется по вертикали. Центр спрайта повторяет форму плитки вкладки, которая соответствует размеру спрайта.

выбирать Плиточный вариант из списка, чтобы получить больше настроек.

Размер: Используйте это, чтобы отрегулировать горизонтальное и вертикальное изменение спрайта. Вам необходимо выполнить эти настройки, чтобы изменить размер спрайта при использовании 9-сегментного спрайта (9-сегментный спрайт).

Режим плитки: Используйте этот параметр, чтобы управлять повторением разделов при изменении размеров спрайта.

Плиточный режим

Расширенные настройки режима плитки:

Непрерывный: Этот параметр важен, когда речь идет об изменении размера спрайта, если он должен меняться равномерно.

Адаптивный: эта часть повторяется только тогда, когда размер спрайта достигает значения растяжения.

Значение растяжения: это значение находится в диапазоне от 0 до 1. Один представляет изображение, которое в два раза превышает размер оригинала. Если значение равно 1, раздел будет повторяться, когда изображение в два раза превышает размер оригинала.

Материалы для рендеринга спрайтов

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

Спрайты / По умолчанию: Ties — это простой шейдер с альфа-смешиванием, который не взаимодействует со светом в сцене.

Спрайты / диффузия: Это простой шейдер поверхности с альфа-смешиванием, который взаимодействует со светом в сцене. Шейдер генерирует направленный вперед вектор нормали.

Отразить спрайты:

1. Возьмите второй спрайт и подчините его первому.
2. Выберите родительский спрайт и присвойте ему значение -1 для масштабирования по оси X.
3. Учтите, что он имеет побочные эффекты для всех дочерних спрайтов.
4. Сбросьте масштаб до 1.
5. Убедитесь, что вы выбрали родительский спрайт и включили опцию Flip-X. Эти параметры поворота представляют собой легкую альтернативу, которая не влияет на другие компоненты GameObject, прикрепленные к спрайту. Это позволяет вращать спрайты индивидуально, независимо от того, являются ли они родителями или дочерними элементами других GameObject.

Сортировка слоев с помощью спрайтов

Затем взгляните на слои сортировки и посмотрите, какие преимущества они могут вам принести. Слои сортировки помогают вам организовать рендеринг спрайтов. Если у вас есть изображение с нижним слоем сортировки, оно визуализируется первым, например, камень позади игрока для имитации фоновых объектов. Если камню назначен более высокий слой сортировки, он перекрывает аватар игрока и становится объектом переднего плана.

1. Создайте 2 слоя сортировки и назовите первый, который вы хотите создать, как фон, а второй как передний план.
2. Выберите первый спрайт и добавьте его в качестве фонового слоя сортировки.
3. Возьмите второй Sprite и добавьте его на слой сортировки Vodergrund.
4. Переместите оба спрайта в одно и то же положение. Вы увидите: слой переднего плана будет перекрывать фоновый слой.
5. Поверните слой со спрайтами, и вы увидите, что спрайты перевернуты, один спрайт перекрывает другой.

В отличие от 3D-игр, в 2D-играх отсутствует понятие глубины. Важно иметь способ определения приоритетов в изображении, чтобы создавалась иллюзия глубины. По этой причине слои сортировки очень важны для двух подпроектов, поскольку они позволяют определять спрайты в группы с приоритетами. Вы также можете установить приоритет перекрытия, чтобы, например, спрайты существовали на одном слое, но могли перекрывать друг друга. Если спрайту игрока присвоено большее значение, чем, например, камню, игрок перемещается на передний план. Это сообщает рендереру, что спрайт игрока имеет приоритет.

Важно понимать, как работает средство визуализации спрайтов, чтобы вы могли лучше его контролировать. В ваших 2D-проектах вы можете настроить поведение спрайтов на экране. Чем больше вы его используете, тем проще будет выполнить необходимые настройки.

Первоначально опубликовано 2020-02-04 16:04:04.

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

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