Изменение цвета текстового компонента во время выполнения в зависимости от цвета фона этого компонента.

Мне было интересно, можно ли изменить цвет текстового компонента, например. «Здоровье», в зависимости от цвета фона во время выполнения. Под цветом фона я не имею в виду фиксированный цвет фона компонента, когда он был создан, я имею в виду фактический цвет, расположенный за самим текстовым компонентом. Целью этого было бы позволить тексту соответствующим образом контрастировать при размещении перед более темными или более светлыми оттенками - в идеале мне нужно только текст, чтобы изменить цвет на белый или черный в зависимости от цвета фона.

Единственный способ, который я мог представить, - это прикрепить к тексту компонент Collider2D, который вызывает метод OnTriggerEnter2D всякий раз, когда обнаруживается более темный оттенок. Чтобы добиться этого, я подумал о назначении тегов тем слоям сцены, которые требуют настройки для достижения более подходящего уровня контраста. Я приложил свое предлагаемое решение ниже, хотя из-за его характера столкновения я не думаю, что это возможно, я приветствовал бы любые предложения. Спасибо.

void OnTriggerEnter2D(Collider2D collide){
    if(collide.gameObject.tag == "ColourContrast"){
        hpText.color = new Color (1, 1, 1, 1);
    }
}

person Dbercules    schedule 09.05.2017    source источник


Ответы (1)


Я имею в виду, что это определенно возможно, но если вам нужно дешевое и простое решение, вы можете просто сделать текст белым с черным контуром, поскольку я уверен, что вы знаете, что это работает поверх любого цвета.

В Unity есть компонент для текстовых контуров.

person TwoRice    schedule 09.05.2017
comment
гораздо меньше хлопот, чем все, о чем я думал, это сработает, ура! - person Dbercules; 10.05.2017