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

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

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

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

1 ответ

Решение

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

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

Другие вопросы по тегам