Color
This structure is used throughout Unity to pass colors around. Each color component is a floating point value with a range from 0 to 1.
Components (r,g,b) define a color in RGB color space. Alpha component (a) defines transparency — alpha of one is completely opaque, alpha of zero is completely transparent.
Static Variables
black | Абсолютно черный. RGBA: (0, 0, 0, 1). |
blue | Абсолютно синий. RGBA: (0, 0, 1, 1). |
clear | Абсолютная прозрачность. RGBA: (0, 0, 0, 0). |
cyan | Голубой. RGBA: (0, 1, 1, 1). |
gray | Серый. RGBA: (0.5, 0.5, 0.5, 1). |
green | Абсолютно зелёный. RGBA: (0, 1, 0, 1).| |
grey | Английское написание цвета Серый gray. RGBA тот-же (0.5, 0.5, 0.5, 1). |
magenta | Пурпурный. RGBA: (1, 0, 1, 1). |
red | Абсолютно красный. RGBA: (1, 0, 0, 1). |
white | Абсолютно белый. RGBA: (1, 1, 1, 1). |
yellow | Желтый. RGBA (1, 0.92, 0.016, 1), и на этот цвет действительно приятно смотреть! |
Variables
a | Alpha component of the color (0 is transparent, 1 is opaque). |
b | Синий компонент цвета. |
g | Зеленый компонент цвета. |
gamma | Вариант цвета, к которому применена кривая гамма-коррекции. |
grayscale | Значение цвета в градациях серого. (Read Only) |
linear | A linear value of an sRGB color. |
maxColorComponent | Returns the maximum color component value: Max(r,g,b). |
r | Красный компонент цвета. |
this[int] | Доступ к компонентам r, g, b, a с помощью [0], [1], [2], [3] соответственно. |
Constructors
Color | Создает новый цвет с заданными компонентами r,g,b,a. |
Public Functions
ToString | Возвращает отформатированую строку содержащую название данного цвета. |
Static Functions
HSVToRGB | Creates an RGB colour from HSV input. |
Lerp | Интерполирует между цветами a и b на основании t. |
LerpUnclamped | Интерполирует между цветами a и b на основании t. |
RGBToHSV | Calculates the hue, saturation and value of an RGB input color. |
Operators
Color | Цвета могут быть неявно преобразованы В и Из формата Vector4. |
operator — | Вычитает цвет b из цвета a. Каждый из компонентов может быть вычтен по отдельности. |
operator * | Перемножает между собой два цвета. Каждый компонент может быть перемножен по отдельности. |
operator / | Делит цвет a на число с плавающей точкой b. Каждый компонент цвета может быть масштабирован по отдельности. |
operator + | Складывает два цвета. Каждый компонент может быть просуммирован по отдельности. |
Vector4 | Цвета могут быть неявно преобразованы В и Из формата Vector4. |
Как измененить цвет одного из группы объектов с общим материалом?
Есть 10 кубов. На каждый повесил один и тот же материал. Есть ли возможность изменять цвет отдельного куба? Сейчас изменяется цвет материала и перекрашиваются все кубы. Цвет будет задаваться из кода и я не знаю какие цвета будут использоваться, так что создать 10 материалов с разными цветами — не вариант.
Отслеживать
задан 8 сен 2018 в 22:07
Александр Ли Александр Ли
1,016 8 8 серебряных знаков 20 20 бронзовых знаков
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Если не затрагивать вопрос GPU instancing`а, то только создавая новый материал во время рантайма.
Вы, вероятно, знакомы со свойствами Renderer.sharedMaterial и Renderer.material .
Первый вариант возвращает общий для группы объектов материал, изменение которого ведет к изменению отрисовки всей группы объектов — материал то общий.
The shared material of this object.
Modifying sharedMaterial will change the appearance of all objects using this material, and change material settings that are stored in the project too.
It is not recommended to modify materials returned by sharedMaterial. If you want to modify the material of a renderer use material instead.
Второй вариант тоже может вернуть общий материал, но разница в том, что при его изменении создается копия материала.
Returns the first instantiated Material assigned to the renderer.
Modifying material will change the material for this object only.
If the material is used by any other renderers, this will clone the shared material and start using it from now on.
// скопирует существующий материал и поменяет его цвет GetComponent().material.SetColor("_Color", Color.black);
Будьте внимательны — порождение новых материалов с помощью такого способа может «выйти из под контроля» в плане количества копий. Более того, может возникнуть ситуация, при которой вы создадите 2 разных материала с одинаковыми свойствами.
- Лучше заведите какой-то менеджер, который будет следить за тем, какие материалы и в каком количестве вы создаете, что позволит не создавать лишние копии.
- Используйте GPU instancing и Property Block`и.
Сортировка групп
Группы сортировки позволяют группировать GameObjects основной объект в сценах Unity, который может представлять персонажи, реквизит, декорации, камеры, путевые точки и многое другое. Функциональность GameObject определяется прикрепленными к нему компонентами. Подробнее
См. в Словарь с Визуализаторы спрайтов Компонент, позволяющий отображать изображения в виде спрайтов для использования как в 2D-, так и в 3D-сценах. Подробнее
См. в Словарь и управляйте порядком, в котором они отображают свои спрайты. Unity визуализирует Sprite двухмерные графические объекты. Если вы привыкли работать в 3D, спрайты — это, по сути, просто стандартные текстуры, но есть специальные приемы комбинирования текстур спрайтов и управления ими для повышения эффективности и удобства во время разработки. Подробнее
Просматривать в Словарь визуализаторы в одной группе сортировки вместе, как если бы они один игровой объект.
Настроить группу сортировки
Чтобы поместить GameObject в Sorting Group, добавьте к нему компонент Sorting Group. Для этого выберите GameObject и перейдите в раздел Component > Rendering > Sorting Group или нажмите кнопку Добавить компонент в окне Inspector GameObject.
Когда вы добавляете компонент Sorting Group к GameObject, Unity применяет одну и ту же Sorting Group ко всем дочерним объектам GameObject, к которым привязан компонент.
Unity использует настройки группы сортировки, чтобы определить, как сортировать свои средства визуализации среди других средств визуализации и групп сортировки в сцене сцене содержит окружение и меню вашей игры. Думайте о каждом уникальном файле сцены как об уникальном уровне. В каждой сцене вы размещаете свое окружение, препятствия и декорации, по сути проектируя и создавая свою игру по частям. Подробнее
См. в Словарь . Дополнительные сведения см. в разделе 2D-сортировка.
Для сортировки модулей визуализации в группе сортировки Unity использует индивидуальные настройки сортировки модулей визуализации в группе сортировки. Дополнительную информацию см. в разделе Сортировка средств визуализации в группе сортировки.
Свойства группы сортировки
Unity использует значения Sorting Group__ Sorting Layer и Order in Layer__ для определения своего приоритета в рендеринг Процесс вывода графики на экран (или текстуры рендеринга). По умолчанию основная камера в Unity отображает изображение на экране. Подробнее
Просмотреть в Словарь среди других групп сортировки и игровых объектов в сцене.
Свойства | Функции |
---|---|
Sorting Layer | Выберите или добавьте Слой сортировки из этого раскрывающегося меню, чтобы определить позицию группы сортировки в очереди рендеринга. Unity определяет порядок слоя сортировки по его месту в настройках слоя сортировки; он отображает слои сортировки в том порядке, в котором они появляются в списке. См. Теги и слои для получения информации о настройке слоев сортировки.. |
Order in Layer | Задайте порядок рендеринга этой группы сортировки в пределах ее слоя сортировки. Unity помещает рендереры с более низкими значениями первыми в очередь рендеринга, поэтому они появляются перед рендерерами с более высокими значениями. |
Дополнительную информацию об использовании слоев сортировки для сортировки спрайтов и критериях сортировки модуля визуализации Unity см. в разделе 2D Sorting.
Сортировка визуализаторов в группе сортировки
Внутренний порядок сортировки группы сортировки остается постоянным, когда Unity сортирует группу сортировки среди других средств визуализации и групп сортировки в сцене.
На следующей диаграмме показан процесс сортировки.
Unity рассматривает все средства визуализации, принадлежащие к одной и той же группе сортировки, как один слой и сортирует несгруппированные средства визуализации на основе их настроек свойств Слой сортировки и Порядок в слое. .
Система частиц
Редактор обрабатывает систему частиц компонент, моделирующий текучие объекты таких как жидкости, облака и пламя, путем создания и анимации большого количества небольших 2D-изображений в сцене. Подробнее
См. в Словарь , который является дочерним элементом группы сортировки, как другой модуль визуализации в этом Sorting Group и сортирует ее внутри среди других средств визуализации на основе его Слоя сортировки и Порядка в слое параметров свойства.
Когда Unity сортирует систему частиц с другими модулями визуализации в группе сортировки, она игнорирует значение Sorting Fudge системы частиц.
Вложенные группы сортировки
Вложенная сортировочная группа — это сортировочная группа, имеющая родительскую сортировочную группу. Unity сначала сортирует средства визуализации во вложенной группе сортировки, а затем их родителя (см. Сортировка средств визуализации во вложенной группе сортировки).
После того, как Unity определяет внутренний порядок сортировки вложенной группы сортировки, она сортирует вложенную группу сортировки с другими модулями визуализации или группами сортировки в родительской группе сортировки. Вложенная группа сортировки может иметь дочернюю вложенную группу сортировки. Unity сначала сортирует самые внутренние дочерние группы перед соответствующими родительскими.
На следующей диаграмме показан пример процесса сортировки вложенной группы сортировки.
Использование групп сортировки
Самый распространенный способ создания 2D-персонажа, состоящего из нескольких спрайтов, состоит в том, чтобы упорядочить несколько визуализаторов спрайтов вместе в окне иерархии, чтобы сформировать персонажа. Вы можете использовать группы сортировки , чтобы упростить управление таким сложным персонажем, состоящим из нескольких спрайтов.
В приведенном ниже примере средства визуализации спрайтов относятся к одному и тому же слою сортировки, но с разными значениями порядка в слое. Unity сортирует различные части персонажа в том порядке, в котором вы хотите, чтобы они отображались.
После того как вы настроили группы сортировки и слои сортировки, вы можете сохранить своего персонажа как префаб Тип актива, который позволяет хранить GameObject с компонентами и свойствами. Префаб действует как шаблон, из которого вы можете создавать новые экземпляры объектов в сцене. Подробнее
Посмотрите в Словарь и скопируйте его столько раз, сколько потребуется.
Однако все сборные спрайты имеют одинаковые значения Sorting Layer и Порядок в слое и визуализируются в тех же слоях, что и другие Prefab, что может привести к тому, что разные части Prefab символ пересекается и наслаивается неправильно.
Чтобы убедиться, что префабы сохраняют постоянный порядок рендеринга, чтобы они отображались правильно, добавьте компонент Sorting Group в корневой GameObject каждого префаба. Сохраните отредактированный префаб, чтобы все текущие и будущие экземпляры префаба также имели компонент «Группа сортировки».
Каждый префаб должен иметь компонент группы сортировки с одинаковыми настройками свойств Слой сортировки и Порядок в слое . Это может привести к тому, что рендереры в префабах, которые находятся на одном и том же слое сортировки, будут отображаться несовместимо, поскольку они имеют одинаковый приоритет в очереди рендеринга.
Чтобы предотвратить эту проблему, присвойте каждому компоненту группы сортировки префаба уникальное значение Порядок в слое . Unity сначала отображает группы сортировки с более низкими значениями Порядок в слое, а группы с более высокими значениями перекрывают группы сортировки с более низкими значениями. См. раздел Теги и слои для получения дополнительной информации о редактировании и изменении порядка сортировки слоев.
Каждый префаб имеет компонент группы сортировки с уникальным значением Порядок в слое, чтобы убедиться, что Unity правильно отображает каждый символ и его части.
Как изменить цвет объекта в Unity3d?
Пробовал изменить цвет разными способами, никак не мог взять компонент image, чтоб напрямую изменить цвет. Нашёл несколько вариантов, из них +- нашёлся тот, который не выдавал ошибок, но всё равно ничего не происходит. Мне нужно, чтоб в зависимости от уровня менялся цвет изображения. Что я не так делаю?
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; public class LevelClick : MonoBehaviour < public int Lvl; public int LvlNext; public int N; public GameObject Player; public GameObject Krug; public void Start() < Lvl = CharController.LVL; >public void OnMouseDown() < Debug.Log("Нажатие на кнопку уровня"); if (Lvl == LvlNext) < SceneManager.LoadScene(N); >> public void Update() < if (Lvl >LvlNext) < Krug.GetComponent().material.color = Color.white; Debug.Log("смена на белый цвет кружка"); > if (Lvl < LvlNext) < Krug.GetComponent().material.color = Color.black; Debug.Log("смена на черный цвет кружка"); > > >
- Вопрос задан более трёх лет назад
- 14600 просмотров
7 комментариев
Простой 7 комментариев