Как сделать изображение черно-белым?
Удивлен, но ответа в интернете я не нашел, возможно плохо искал.
Я хочу сделать так, чтобы картинка, которая изначально цветная, была черно-белой, если игрок еще не купил определенный предмет, за который эта картинка отвечает. Я уверен, что есть лучший способ, чем делать черно-белую копию для КАЖДОГО изображения игры, однако не знаю, можно ли программно обесцветить sprite.
Я постарался изучить эту идею. В частности, наткнулся на следующий вопрос. Однако там рассматривается обесцвечивание всей сцены за исключением игрока с помощью с пост-эффектов на камере, а мне нужно сделать черно-белыми несколько отдельных объектов с компонентов SpriteRenderer.
Я также посмотрел такую статью (https://en.wikipedia.org/wiki/Relative_luminance) по Relative luminance. Однако не совсем понял, что конкретно нужно сделать, да и вообще не уверен, что это то, что может помочь. Так что, чтобы не было проблемы XY не буду настаивать что это может быть решением.
Я понимаю, что такого рода вопросы не лучшие для данного сайта, однако я изучил некоторые вещи, но не нашел решения. Возможно в Юнити есть какой-то специальный компонент или ассет из AssetStore для подобных задач?
Ответы (1 шт):
Это делается через шейдеры.
Скачай ассет ShaderGraph. В нем создай шейдер который делает обьект черно-белым. (погугли "shader graph Grayscale" )
А потом просто меняй шейдер, когда необходимо, на обычный.
Или даже сделай переключатель "черно-белое" сразу в шейдере и переключай в игре прямо его не меняя шейдер в принципе.