我想知道是否可以更改文本组件的颜色,例如" Health",基于它在运行时的背景颜色。通过背景颜色,我并不是指组件在创建时的固定背景颜色,我的意思是位于文本组件本身后面的实际颜色。这样做的目的是让文本在深色或浅色调前面的位置进行适当的对比 - 理想情况下,我只需要根据背景颜色将文本颜色更改为白色或黑色。
我能想象的唯一方法是将Collider2D组件附加到文本上,只要检测到较暗的阴影,就会调用OnTriggerEnter2D方法。为了实现这一点,我想到将标签分配给那些需要调整以实现更合适的对比度的场景层。我已经在下面附上了我提出的解决方案,虽然由于碰撞的性质我不认为它是可行的,但我欢迎任何建议。感谢。
void OnTriggerEnter2D(Collider2D collide){
if(collide.gameObject.tag == "ColourContrast"){
hpText.color = new Color (1, 1, 1, 1);
}
}
答案 0 :(得分:1)
我的意思是它绝对可能,但是如果你想要一个便宜而简单的解决方案,你可以将文字变成白色并带有黑色轮廓,因为我相信你知道这可以在任何颜色的顶部工作。
Unity有一个文本大纲的组件。