Я изучаю создание прототипа игры в Unity, которая будет состоять из сплошных квадратных спрайтов / тайлов. Я полагаю, что могу представлять разные типы объектов с разными цветами для каждой плитки в игре.
Я полагаю, что могу импортировать один квадратный спрайт и соответствующим образом закрасить его в Unity, в отличие от импортированных квадратов разных цветов.
Мой опыт с настройкой оттенка и насыщенности в Photoshop показывает, что белый цвет изменить нелегко, поскольку белые вещи часто остаются белыми. Мои тесты в Unity показывают, что я могу изменить «цвет» спрайта на что угодно, кроме белого, и спрайт, по-видимому, соответствующим образом затенен, несмотря на то, что я мог бы подумать, учитывая мой опыт работы с Photoshop.
Поскольку белые объекты, кажется, приобретают соответствующий оттенок цвета при изменении в Unity, моя интуиция говорит мне, что это лучший базовый цвет для начала, а это означает, что я могу импортировать один белый квадратный спрайт и просто настроить цвет для представления различных объектов. и состояния объекта.
Является ли белый спрайт лучшим цветным спрайтом для начала и почему что-то подобное работает в Unity, а не регулирует оттенок и насыщенность в Photoshop?
Ответы:
Белый - лучший базовый цвет для истинного представления. Кроме того, сохранение оттенков серого в спрайте позволяет легко настраивать цвета для команд и т. Д.
Unity применяет
Multiply
режим смешивания к текстуре и цвету спрайта.Тип цвета Unity варьируется от 0 до 1 включительно.
Color.White равен
(1, 1, 1, 1)
.Зная, что
1
раз все само по себе.Если оттенки серого
texture
смешаны сColor
полем Sprite Renderer , каждый пиксель сам по себе. Изменение этого поля будет просто умножить каждое однородное значение оттенков серого на каждый компонент цвета.Вы можете играть в режиме смешивания Multiply в вашем любимом графическом редакторе, таком как Photoshop или GIMP.
источник
Sprites-Additive.shader - GitHub Gist
Цвета Unity имеют 4 значения с плавающей запятой, типичные для многих цветовых форматов RGBA, соответствующие индивидуальным процентным значениям цвета Красный, Зеленый, Синий и Альфа-канал прозрачности.
Также, как упомянуто выше, «Оттенок» по умолчанию, применяемый Unity, является мультипликативным шейдером. Photoshop называет этот эффект «Умножение», и процесс буквально умножает значения цвета в пикселях вашего спрайта на выбранное значение цвета.
Проблема в том, что математический шейдер Multiplicative color ВСЕГДА будет производить одинаковый оттенок (если вы «умножаете» на белый) или более темный цвет, если вы умножаете на что-либо еще. Я столкнулся с ситуацией, когда я хотел получить совершенно противоположный эффект в ситуации с кузнечным делом. Нагретый металл не должен умножаться на желтый, чтобы получить более темный оттенок:
Вместо этого я переписал мультипликативный шейдер Unity по умолчанию, чтобы он был аддитивным. Результаты были больше похожи на то, что я искал:
Я предоставлю суть переписанному Sprites-Additive.shader, если кому-то будет интересно.
Вот хороший справочник по цветовой терминологии и модам: http://www.northlite.net/ps/blend.htm
источник