如何正确更改 MRTK Interactable 按钮中的禁用颜色?
How to change disabled color in MRTK Interactable buttons correctly?
我正在使用 unity3D 和 Hololens2 的 MRTK 包的应用程序,我试图在禁用时更改开关的颜色。
切换器上有一个带有许多配置文件的 Interactable 脚本,其中之一有两个用于所选状态的主题,即“InteractableActivateTheme”和“Interactable color children theme”。
当使用主题字段“Pressed”和“Default”选择时,我成功地使用了后者来更改切换器的颜色,但在任何情况下我都无法使用“Disabled”字段。
Screenshot of the profile I am talking about
我通过代码将状态设置为禁用来禁用切换:
PlaceToggle.SetState(InteractableStates.InteractableStateEnum.Disabled, true);
PlaceToggle.enabled = true;
切换禁用自身,但颜色保持红色已在“InteractableColorChildrenTheme”的“默认”状态属性中设置。
我也试过像这样通过代码改变颜色,但我没有结果:
var activeThemes = PlaceToggle.ActiveThemes;
foreach (InteractableThemeBase itb in activeThemes)
{
if (itb is InteractableColorChildrenTheme)
{
Debug.Log(" changing state property");
var property = itb.StateProperties;
oldColor = itb.StateProperties[0].Values[0].Color;
itb.StateProperties[0].Values[0].Color = Color.gray;
}
}
关于我如何理解正在发生的事情以及为什么它不起作用的任何想法?
谢谢大家
请尝试使用以下代码禁用您的按钮:
buttonInteractable = this.GetComponent<Interactable>();
buttonInteractable.IsEnabled = false;
已在 MRTK2.7 和 Unity 2019.4.22 中验证。
我正在使用 unity3D 和 Hololens2 的 MRTK 包的应用程序,我试图在禁用时更改开关的颜色。
切换器上有一个带有许多配置文件的 Interactable 脚本,其中之一有两个用于所选状态的主题,即“InteractableActivateTheme”和“Interactable color children theme”。 当使用主题字段“Pressed”和“Default”选择时,我成功地使用了后者来更改切换器的颜色,但在任何情况下我都无法使用“Disabled”字段。
Screenshot of the profile I am talking about
我通过代码将状态设置为禁用来禁用切换:
PlaceToggle.SetState(InteractableStates.InteractableStateEnum.Disabled, true);
PlaceToggle.enabled = true;
切换禁用自身,但颜色保持红色已在“InteractableColorChildrenTheme”的“默认”状态属性中设置。 我也试过像这样通过代码改变颜色,但我没有结果:
var activeThemes = PlaceToggle.ActiveThemes;
foreach (InteractableThemeBase itb in activeThemes)
{
if (itb is InteractableColorChildrenTheme)
{
Debug.Log(" changing state property");
var property = itb.StateProperties;
oldColor = itb.StateProperties[0].Values[0].Color;
itb.StateProperties[0].Values[0].Color = Color.gray;
}
}
关于我如何理解正在发生的事情以及为什么它不起作用的任何想法? 谢谢大家
请尝试使用以下代码禁用您的按钮:
buttonInteractable = this.GetComponent<Interactable>();
buttonInteractable.IsEnabled = false;
已在 MRTK2.7 和 Unity 2019.4.22 中验证。