diff --git a/CommunityEntity.UI.cs b/CommunityEntity.UI.cs index b49933c..71878fb 100644 --- a/CommunityEntity.UI.cs +++ b/CommunityEntity.UI.cs @@ -341,29 +341,35 @@ T GetOrAddComponent() where T : Component if ( ShouldUpdateField( "imagetype" ) ) img.type = ParseEnum( obj.GetString( "imagetype", "Simple" ), UnityEngine.UI.Image.Type.Simple ); - c.image = img; - - // Modify the color of the button when hovered - // Have to grab colorBlock, modify then reassign - var colors = c.colors; - - if (HasField("normalColor")) - colors.normalColor = ColorEx.Parse(obj.GetString("normalColor", "1.0 1.0 1.0 1.0")); - if (HasField("highlightedColor")) - colors.highlightedColor = ColorEx.Parse(obj.GetString("highlightedColor", "1.0 1.0 1.0 1.0")); - if (HasField("pressedColor")) - colors.pressedColor = ColorEx.Parse(obj.GetString("pressedColor", "1.0 1.0 1.0 1.0")); - if (HasField("selectedColor")) - colors.selectedColor = ColorEx.Parse(obj.GetString("selectedColor", "1.0 1.0 1.0 1.0")); - if (HasField("disabledColor")) - colors.disabledColor = ColorEx.Parse(obj.GetString("disabledColor", "0.5 0.5 0.5 0.5")); - if (HasField("colorMultiplier")) - colors.colorMultiplier = obj.GetFloat("colorMultiplier", 1.0f); - if (HasField("fadeDuration")) - colors.fadeDuration = obj.GetFloat("fadeDuration", 0.1f); - - c.colors = colors; - + c.image = img; + + // Modify the color of the button when hovered + // Have to grab colorBlock, modify then reassign + var colors = c.colors; + + if (HasField("normalColor")) + colors.normalColor = ColorEx.Parse(obj.GetString("normalColor", "1.0 1.0 1.0 1.0")); + if (HasField("highlightedColor")) + colors.highlightedColor = ColorEx.Parse(obj.GetString("highlightedColor", "1.0 1.0 1.0 1.0")); + if (HasField("pressedColor")) + colors.pressedColor = ColorEx.Parse(obj.GetString("pressedColor", "1.0 1.0 1.0 1.0")); + if (HasField("selectedColor")) + colors.selectedColor = ColorEx.Parse(obj.GetString("selectedColor", "1.0 1.0 1.0 1.0")); + if (HasField("disabledColor")) + colors.disabledColor = ColorEx.Parse(obj.GetString("disabledColor", "0.5 0.5 0.5 0.5")); + if (HasField("colorMultiplier")) + colors.colorMultiplier = obj.GetFloat("colorMultiplier", 1.0f); + if (HasField("fadeDuration")) + colors.fadeDuration = obj.GetFloat("fadeDuration", 0.1f); + + + // apply it with fadeDuration of 0 first so the colors instantly apply rather than tweening from img.color + var fadeDur = colors.fadeDuration; + colors.fadeDuration = 0f; + c.colors = colors; + colors.fadeDuration = fadeDur; + c.colors = colors; + GraphicComponentCreated( img, obj ); break; @@ -869,6 +875,11 @@ private void BuildScrollbar(Scrollbar scrollbar, JSON.Object obj, bool vertical) block.highlightedColor = ColorEx.Parse( obj.GetString( "highlightColor", "0.17 0.17 0.17 1" ) ); // hover block.pressedColor = ColorEx.Parse( obj.GetString( "pressedColor", "0.2 0.2 0.2 1" ) ); // press block.selectedColor = block.pressedColor; // never really used, but can still show up sometimes + + var fadeDur = block.fadeDuration; + block.fadeDuration = 0f; + scrollbar.colors = block; + block.fadeDuration = fadeDur; scrollbar.colors = block; // style the background track