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

Spriterenderer unity что это

  • автор:

Spriterenderer unity что это

Компонент Sprite Renderer позволяет вам отображать изображения в виде спрайтов( Sprites ), чтобы использовать их и в 2D и в 3D сценах.

Add it to a GameObject via the Components menu (Component > Rendering > Sprite Renderer or alternatively, you can just create a GameObject directly with a Sprite Renderer already attached (menu: GameObject > 2D Object > Sprite).

Свойство: Функция:
Sprite Спрайт, который надо рендерить. Спрайты можно создать из текстур используя настройку Sprite в импортере текстур (Texture importer).
Color Цвет меша, который рендерится.
Flip Flip the sprite in the X or Y planes.
Material Материал, используемый для рендера спрайта.
Sorting Layer Слой, используемый для задачи приоритета наложения во время рендеринга.
Order In Layer Приоритет наложения спрайта в рамках его слоя. Чем ниже число, тем раньше будет рендериться спрайт, а спрайты с числами повыше, будут рисоваться поверх тех, что ниже.

Детали

В 3D графике внешний вид объекта может быть разным в соответствии с освещением и с точкой обзора на объект. А вот в 2D изображение просто отображается на экране без каких-либо трансформаций, кроме базовых перемещения, масштабирования и вращения. Позиция спрайта задаётся 2D координатами, таким образом здесь нету концепта “глубины” или расстояния от камеры.

Тем не менее, важно иметь способ определения приоритета наложения разных спрайтов(т.е, какие спрайты будут рисоваться поверх других, в случае пересечения). Например, в игре с вождением, автомобиль должен быть виден при проходе по плоским объектам на дороге. Unity использует концепт слоёв сортировки ( sorting layers ), чтобы позволить разделять спрайты на группы с приоритетами наложения. Спрайты, с более низким сортировочным слоем будут рисоваться под спрайтами с более высоким сортировочным слоем.

Иногда, два или более объекта в одном и том же сортировочном слое могут накладываться (например, 2 персонажа в сайд-скроллере). Свойство order in layer может быть использовано, чтобы задать приоритеты спрайтам в одном и том же слое. Так же, как и со слоями сортировки, применяется правило, что сначала рендерятся объекты с более низким значением номера и перекрываются объектами с более высоким значением. Для деталей о редактировании слоёв сортировки см.layer manager.

Рендеринг

Sprite Renderer использует текстуру указанную в свойстве Sprite, но использует шейдер и другие свойства из свойства Material (это выполняется используя за сценой MaterialPropertyBlock). Это значит, что вы можете использовать один и тот же материал для рендера разных спрайтов не трогая каждую текстуру по отдельности.

Спрайт рендерится на меше, который использует позицию, цвет и UV на каждой вершине, но у него нет вектора нормали. Если ваш материал требует векторы нормалей, то вы можете рассчитать их используя вертексный шейдер (см. Surface Shader Examples.

Стандартные шейдеры, используемые для спрайтов:

  • Sprites/Default — простой шейдер с альфа смешиванием, который не взаимодействует с освещением в сцене.
  • Sprites/Diffuse — просто шейдер поверхности с альфа смешиванием который взаимодействует с освещением. Он генерирует переднесторонний вектор нормали (0,0,–1).

Flipping

While Sprites can be flipped by setting negative transform.scale , this has the side effect of also flipping the child GameObjects and also flipping the colliders, which can be performance intensive or otherwise not preferred.

The SpriteRenderer flipping feature provides a lightweight alternative which doesn’t affect any other components or GameObjects. It simply flips the rendered sprite on x or y axis and nothing else.

Проблема со 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.9k 12 12 золотых знаков 91 91 серебряный знак 180 180 бронзовых знаков

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

5 июн 2021 в 12:28

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

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

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

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

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

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

Спрайты в Unity: определение, как их создавать и использовать

Lorem ipsum dolor

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

Спрайт — это графический объект, который используется при создании 2D-игр . Спрайт-технология пришла к нам еще в 80-х год ах . Первые игры делались с применением спрайтов. Все знают, что если взять несколько похожих картинок и в определенной последовательности быстро их «прокрутить», то получится анимация или видео. Многие вспомнят о том, что видео — это 24 кадра в секунду, которые видит человек. Именно по такой «прокрутке» кадров и происходит создание спрайт-объектов. К примеру, берется игровой персонаж , а затем созда ется несколько разных его изображений. Потом эти изображения помещают в контейнер и зацикливают их прокрутку. Таким образом , получается анимация. Если показ картинок «подвязать» к кнопкам управления, тогда появляется полноценный игровой объект, который будет реагировать на нажатие кнопок. Например, при движении вправо показываются одни картинки, влево — другие. А у пользователя создается впечатление, что игровой персонаж анимирован. Повторимся, что по факту происходит только смена картинок в кадре.

В Unity работа со спрайтами внедрена по умолчанию, когда движок настроен на разработку 2D-игр. Если спрайт посмотреть в 3D-режиме, тогда он окажется «плоским», как лист бумаги. Все потому, что спрайт — это 2D-объект и у него нет Z-ширины.

Как создать спрайт для Unity

Когда на Unity создается новый спрайт, ему необходимо задать текстуру. Текстура — это изображение, которое отражает внешний вид спрайта. Такое изображение прикрепляется к спрайту, создавая GameObject, который можно использовать в игре.

Если нет возможности сразу добавить текстуру в проект, но наличие спрайта в игре вам обязательно, тогда можно применить «заполнитель спрайтов» на Unity. Заполнитель — это встроенный инструмент, который создает спрайт в виде простых геометрических фигур типа треугольника, квадрата, круга и заполняет их белым цветом. В дальнейшем всегда будет доступно редактирование «заполнителя».

Чтобы создать спрайт на Unity , пройдите по следующему пути:

Assets → Create → Sprites

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

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

  1. Открыть 2D-изображение в представлении проекта «Project View». Спрайт, который находится в режиме «Scene View» , редактироваться не может.
  2. Найти кнопку «Sprite Editor». Вам откроется редактор спрайтов, в котором будет несколько доступных инструментов. Например : изменение масштаба, изменение расцветки, изменение местоположения спрайта на экране, поворот спрайта, настроить прозрачность, обрезать и др.

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

Отобразить спрайт в Unity помогает компонент Sprite Renderer. Его нужно добавлять в GameObject через меню Components:

Components → Rendering → Sprite Renderer

Когда создается 3D-графика, тогда способов отразить объемный объект очень много. Например, внешний вид объекта будет зависеть от его положения на экране, освещенности, перемещения, положения камеры и др. С 2D-объектами этого всего нет.

Однако важно, чтобы соблюдался приоритет между спрайтами. То ест ь в ажно определить , какой спрайт может накладываться на другой спрай т в случаях их пересечения. Sprite Renderer как раз отвечает за соблюдение приоритетности. Делается это при помощи применения технологии сортировки слоев. То есть спрайты с низким приоритетом располагаются на низших слоях и могут перекрываться спрайтами с более высоким приоритетом.

Заключение

  • Paint Net;
  • Krita;
  • SAI 2;
  • GIMP;
  • Clip Studio Paint;
  • и др.

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

SpriteRenderer

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

Ошибка внесения изменений

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

Ваше имя Адрес вашей электронной почты Предложение * Разместить предложенное

Описание

Визуализирует спрайт для 2D графики.

Переменные

color Визуализация цвета спрайта.
flipX Зеркально отражает спрайт по оси X.
flipY Зеркально отражает спрайт по оси Y.
sprite Спрайт для визуализации.

Унаследованные члены

Переменные

gameObject The game object this component is attached to. A component is always attached to a game object.
tag Тег данного игрового объекта.
transform The Transform attached to this GameObject (null if there is none attached).
hideFlags Should the object be hidden, saved with the scene or modifiable by the user?
name The name of the object.
bounds The bounding volume of the renderer (Read Only).
enabled Makes the rendered 3D object visible if enabled.
isPartOfStaticBatch Has this renderer been statically batched with any other renderers?
isVisible Is this renderer visible in any camera? (Read Only)
lightmapIndex Индекс карты освещения, примененной при визуализации.
lightmapScaleOffset The UV scale & offset used for a lightmap.
localToWorldMatrix Matrix that transforms a point from local space into world space (Read Only).
material Returns the first instantiated Material assigned to the renderer.
materials Returns all the instantiated materials of this object.
probeAnchor Если установлено, Renderer будет использовать позицию Transform’s, чтобы найти интерполированные светопробы.
realtimeLightmapIndex Индекс карты освещения, примененной при визуализации.
realtimeLightmapScaleOffset The UV scale & offset used for a realtime lightmap.
receiveShadows Does this object receive shadows?
reflectionProbeUsage Should reflection probes be used for this Renderer?
shadowCastingMode Does this object cast shadows?
sharedMaterial The shared material of this object.
sharedMaterials All the shared materials of this object.
sortingLayerID Unique ID of the Renderer’s sorting layer.
sortingLayerName Name of the Renderer’s sorting layer.
sortingOrder Renderer’s order within a sorting layer.
useLightProbes Should light probes be used for this Renderer?
worldToLocalMatrix Matrix that transforms a point from world space into local space (Read Only).

Открытые функции

BroadcastMessage Вызывает метод названный methodName на каждом MonoBehaviour этого game object-а или любого из его потомков.
CompareTag Помечен ли этот игровой объект тэгом tag?
GetComponent Возвращает компонент типа type, если он прикреплен к игровому объекту и null, если не прикреплен.
GetComponentInChildren Returns the component of Type type in the GameObject or any of its children using depth first search.
GetComponentInParent Returns the component of Type type in the GameObject or any of its parents.
GetComponents Returns all components of Type type in the GameObject.
GetComponentsInChildren Returns all components of Type type in the GameObject or any of its children.
GetComponentsInParent Returns all components of Type type in the GameObject or any of its parents.
SendMessage Вызывает метод с именем methodName в каждом MonoBehaviour на этом объекте.
SendMessageUpwards Вызывает на каждом MonoBehaviour в данном игровом объекте и на каждом предке скрипта метод с именем methodName.
GetInstanceID Returns the instance id of the object.
ToString Returns the name of the game object.
GetClosestReflectionProbes Returns an array of closest reflection probes with weights, weight shows how much influence the probe has on the renderer, this value is also used when blending between reflection probes occur.
GetPropertyBlock Get per-renderer material property block.
SetPropertyBlock Lets you add per-renderer material parameters without duplicating a material.

Статические функции

Destroy Removes a gameobject, component or asset.
DestroyImmediate Destroys the object obj immediately. You are strongly recommended to use Destroy instead.
DontDestroyOnLoad Makes the object target not be destroyed automatically when loading a new scene.
FindObjectOfType Returns the first active loaded object of Type type.
FindObjectsOfType Returns a list of all active loaded objects of Type type.
Instantiate Returns a copy of the object original.

Операторы

bool Does the object exist?
operator != Compares if two objects refer to a different object.
operator == Compares two object references to see if they refer to the same object.

Сообщения

OnBecameInvisible OnBecameInvisible is called when the object is no longer visible by any camera.
OnBecameVisible OnBecameVisible is called when the object became visible by any camera.

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

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