C# 在运行时根据文本组件的背景颜色更改该组件的颜色

C# 在运行时根据文本组件的背景颜色更改该组件的颜色,c#,colors,runtime,unity2d,C#,Colors,Runtime,Unity2d,我想知道是否有可能在运行时根据文本组件的背景颜色更改其颜色,例如“Health”。我所说的背景色并不是指已经创建的组件的固定背景色,而是指位于文本组件后面的实际颜色。这样做的目的是,当文本放置在较暗或较浅的阴影前时,可以进行适当的对比-理想情况下,我只需要文本根据背景颜色将颜色更改为白色或黑色 我能想到的唯一方法是将一个碰撞的R2D组件附加到文本上,每当检测到较暗的阴影时,就会调用OnTiggerEnter2D方法。为了实现这一点,我考虑将标签指定给那些需要调整以获得更合适对比度的场景层。我在下

我想知道是否有可能在运行时根据文本组件的背景颜色更改其颜色,例如“Health”。我所说的背景色并不是指已经创建的组件的固定背景色,而是指位于文本组件后面的实际颜色。这样做的目的是,当文本放置在较暗或较浅的阴影前时,可以进行适当的对比-理想情况下,我只需要文本根据背景颜色将颜色更改为白色或黑色

我能想到的唯一方法是将一个碰撞的R2D组件附加到文本上,每当检测到较暗的阴影时,就会调用OnTiggerEnter2D方法。为了实现这一点,我考虑将标签指定给那些需要调整以获得更合适对比度的场景层。我在下面附上了我提出的解决方案,尽管由于它的碰撞性质,我认为它不可行,我欢迎任何建议。谢谢

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

我的意思是这绝对是可能的,但是如果你想要一个便宜又简单的解决方案,你可以把文本变成白色,加上黑色的轮廓,因为我相信你知道这在任何颜色上都是可行的


Unity有一个用于文本大纲的组件。

比我想象中的任何东西都要轻松,这将非常有效,干杯!