Шейдер на отключенном объекте?

введите здесь описание изображения

Привет, люди единства. Я нашел этот эффект (отключен серым цветом), когда искал что-то на панели иерархии. Мне это нравится! - Как можно было бы добавить такой эффект к игровым объектам в игре. есть ли простые в реализации решения.

можно ли использовать в игре то, что делает Unity? например - на заблокированном элементе?

Я даже не знаю, что искать. Если это шейдер, или как это будет работать.

void OnItemEnabled()
{
?
}

Некоторые эксперименты на данный момент Используя шейдер с подсветкой, он, однако, теряет детали и, кажется, нуждается в способе извлечения цветов из текущих шейдеров, чтобы сохранить все детали Подсвеченный шейдер

Как бы я хотел, чтобы обезьяна выглядела в запертом состоянии

введите здесь описание изображения

Я сделал шейдер в оттенках серого... но он немного темный. Не знаю, как осветлить его, чтобы он соответствовал внешнему виду "единства".

введите здесь описание изображения

Мое окончательное решение здесь: код шейдера здесь с ползунком для регулировки яркости:

введите здесь описание изображения

Shader "Custom/GreyScale"
{
Properties
{
[PerRendererData] _MainTex("Base (RGB)", 2D) = "white" {}
_EffectAmount("Effect Amount", Range(0, 10)) = 1.0
}

SubShader{
Tags { "RenderType" = "Opaque" }
LOD 200

CGPROGRAM
#pragma surface surf Lambert

uniform float _EffectAmount;
sampler2D _MainTex;
struct Input {
float2 uv_MainTex;
};

void surf(Input IN, inout SurfaceOutput o) {
half4 c = tex2D(_MainTex, IN.uv_MainTex);
o.Albedo = (c.r + c.g + c.b) / 3 * _EffectAmount;
o.Alpha = c.a;
}
ENDCG
}
FallBack "Diffuse"
//Fallback "Transparent/VertexLit"
}

Мое решение здесь - код выше.

Мое решение здесь

Замена материалов при разблокировке

Также я обнаружил, что это решение решило только половину проблемы, я планировал поменять местами шейдеры (но обнаружил, что это не так), поэтому мое решение для этого здесь Создание разблокируемого игрового ресурса, написание простого класса

С благодарностью Н


person StackBuddy    schedule 05.02.2020    source источник
comment
Почти уверен, что если вы просто удалите текстуру, используете шейдер с подсветкой и установите цвет на белый/серый - вы должны получить аналогичные результаты. Вы можете просто менять материалы MeshRenderer на лету.   -  person Ron    schedule 05.02.2020
comment
Спасибо, Рон, я попробовал ваше предложение; кажется, что я теряю слишком много деталей, если я пойду таким путем. Надеюсь, есть способ работать с цветовыми каналами? ... или что-то подобное, чтобы сохранить градации цвета, но принудительно использовать шкалу серого ... что было бы полезно как большинство этих объектов представляют собой процедурные цвета из нескольких материалов - у некоторых есть карты... поэтому замена их на правильную часть меша может быть сложной...   -  person StackBuddy    schedule 05.02.2020
comment
попробуйте использовать оттенки серого   -  person Ankit    schedule 05.02.2020
comment
Спасибо, Ankit, я сделал шейдер в оттенках серого, но я хотел бы сделать его немного ярче — на полпути :)   -  person StackBuddy    schedule 05.02.2020
comment
o.Albedo = (c.r + c.g + c.b) / 3 * intensityMultiplier; попробуйте добавить это и сделайте intensityMultiplier; редактируемым из редактора, и оно не может быть ниже 1.   -  person Ankit    schedule 05.02.2020
comment
Спасибо, Анкит, ты наставил меня на правильный путь, поэтому я добавил ползунок в шейдер и вполне доволен результатом! Ваше здоровье!.   -  person StackBuddy    schedule 05.02.2020
comment
Молодец, удачи впереди. Можете ли вы порекомендовать мне какое-нибудь место для изучения разработки шейдеров, я уже немного знаю о шейдерах, но все это из актива Amplify Shader Editor из магазина активов Unity. но не очень разбираюсь в кодировании собственного шейдера.   -  person Ankit    schedule 05.02.2020
comment
Спасибо, Анит, хм, я бы попробовал скобки или какой-нибудь YouTube TBH, все, что я знаю о шейдерах, умещается на моем мизинце ;P Счастливых путешествий в единстве :) и спасибо! youtube.com/watch?v=vqDOirux0Es   -  person StackBuddy    schedule 05.02.2020
comment
Как оказалось, я не могу поменять местами время выполнения шейдера... так что теперь у меня другой вопрос; P stackoverflow.com/questions/60078281/   -  person StackBuddy    schedule 05.02.2020