Изменение цвета текстового компонента во время выполнения в зависимости от цвета фона этого компонента
Мне было интересно, можно ли было изменить цвет текстового компонента, например, "Здоровье", основываясь на его цвете фона во время выполнения. Под цветом фона я не подразумеваю фиксированный цвет фона компонента, как он был создан, я имею в виду фактический цвет, расположенный за самим текстовым компонентом. Цель этого состоит в том, чтобы позволить тексту соответствующим образом контрастировать, когда он расположен перед более темными или более светлыми оттенками - в идеале мне нужен только текст, чтобы изменить цвет на белый или черный в зависимости от цвета фона.
Единственный метод, который я мог бы себе представить, - это прикрепить к тексту компонент Collider2D, который вызывает метод OnTriggerEnter2D всякий раз, когда обнаруживается более темный оттенок. Чтобы добиться этого, я думал о назначении тегов тем слоям сцены, которые требуют регулировки для достижения более подходящего уровня контрастности. Я приложил свое предлагаемое решение ниже, хотя из-за природы столкновения я не думаю, что оно осуществимо, я буду рад любым предложениям. Благодарю.
void OnTriggerEnter2D(Collider2D collide){
if(collide.gameObject.tag == "ColourContrast"){
hpText.color = new Color (1, 1, 1, 1);
}
}
1 ответ
Я имею в виду, что это определенно возможно, но если вы хотите дешевое и простое решение, вы можете просто сделать текст белым с черным контуром, так как я уверен, что вы знаете, что это работает поверх любого цвета.
Unity имеет компонент для текстовых контуров.