根据该组件的背景颜色在运行时更改文本组件的颜色
Change colour of text component during runtime based on the background colour of that component
我想知道是否可以更改文本组件的颜色,例如"Health",基于它在运行时的背景颜色。我所说的背景颜色并不是指组件创建时的固定背景颜色,而是指位于文本组件本身后面的实际颜色。这样做的目的是让文本在放置在较深或较浅的阴影前面时适当地形成对比 - 理想情况下,我只需要根据背景颜色将文本颜色更改为白色或黑色。
我能想到的唯一方法是将 Collider2D 组件附加到文本,只要检测到较暗的阴影,它就会调用 OnTriggerEnter2D 方法。为了实现这一点,我想到了为那些需要调整以达到更合适的对比度水平的场景图层分配标签。我在下面附上了我提出的解决方案,尽管由于它的碰撞性质,我认为它不可行,但我欢迎任何建议。谢谢
void OnTriggerEnter2D(Collider2D collide){
if(collide.gameObject.tag == "ColourContrast"){
hpText.color = new Color (1, 1, 1, 1);
}
}
我的意思是它绝对有可能,但如果您想要一个便宜且简单的解决方案,您可以将文本设为白色并带有黑色轮廓,因为我相信您知道这适用于任何颜色。
Unity 有一个文本轮廓组件。
我想知道是否可以更改文本组件的颜色,例如"Health",基于它在运行时的背景颜色。我所说的背景颜色并不是指组件创建时的固定背景颜色,而是指位于文本组件本身后面的实际颜色。这样做的目的是让文本在放置在较深或较浅的阴影前面时适当地形成对比 - 理想情况下,我只需要根据背景颜色将文本颜色更改为白色或黑色。
我能想到的唯一方法是将 Collider2D 组件附加到文本,只要检测到较暗的阴影,它就会调用 OnTriggerEnter2D 方法。为了实现这一点,我想到了为那些需要调整以达到更合适的对比度水平的场景图层分配标签。我在下面附上了我提出的解决方案,尽管由于它的碰撞性质,我认为它不可行,但我欢迎任何建议。谢谢
void OnTriggerEnter2D(Collider2D collide){
if(collide.gameObject.tag == "ColourContrast"){
hpText.color = new Color (1, 1, 1, 1);
}
}
我的意思是它绝对有可能,但如果您想要一个便宜且简单的解决方案,您可以将文本设为白色并带有黑色轮廓,因为我相信您知道这适用于任何颜色。
Unity 有一个文本轮廓组件。