public static RectTransform Button(RectTransform parent, string text) { GameObject obj = new GameObject("ToyBox.Button"); RectTransform transform = obj.AddComponent <RectTransform>(); transform.SetParent(parent, false); transform.anchorMin = new Vector2(0.0f, 0.0f); transform.anchorMax = new Vector2(1.0f, 1.0f); transform.pivot = new Vector2(0.5f, 0.5f); transform.offsetMin = new Vector2(0.0f, 0.0f); transform.offsetMax = new Vector2(0.0f, 0.0f); HorizontalLayoutGroupWorkaround group = obj.AddComponent <HorizontalLayoutGroupWorkaround>(); group.SetLayoutHorizontal(); group.childControlWidth = true; group.childControlHeight = true; group.childForceExpandWidth = false; group.childForceExpandHeight = false; group.childScaleWidth = false; group.childScaleHeight = false; group.childAlignment = TextAnchor.MiddleCenter; group.spacing = DefaultSpacing; group.padding = DefaultPadding; LayoutElement layout = obj.AddComponent <LayoutElement>(); layout.minWidth = -1.0f; layout.minHeight = -1.0f; layout.preferredWidth = -1.0f; layout.preferredHeight = -1.0f; layout.flexibleWidth = 1.0f; layout.flexibleHeight = 1.0f; CanvasRenderer renderer = obj.AddComponent <CanvasRenderer>(); RectTransform inner_text = crUI.Text(transform, text); inner_text.GetComponent <TextMeshProUGUI>().alignment = TextAlignmentOptions.Center; Image image = obj.AddComponent <Image>(); image.sprite = crUI.ButtonBackgroundImage?.sprite; SpriteState sprite_state = crUI.ButtonBackgroundSpriteState; OwlcatButton button = obj.AddComponent <OwlcatButton>(); button.ClickSoundType = -1; button.HoverSoundType = 0; OwlcatSelectableLayerPart part0 = new OwlcatSelectableLayerPart(); part0.Image = image; part0.Transition = OwlcatTransition.SpriteSwap; part0.SpriteState = sprite_state; OwlcatSelectableLayerPart part1 = new OwlcatSelectableLayerPart(); ColorBlock colors = new ColorBlock(); colors.normalColor = new Color(0.7843f, 0.7686f, 0.749f, 1.0f); colors.highlightedColor = new Color(0.9176f, 0.8824f, 0.8235f, 1.0f); colors.pressedColor = new Color(0.7647f, 0.749f, 0.7294f, 1.0f); colors.selectedColor = new Color(0.9176f, 0.8824f, 0.8235f, 1.0f); colors.disabledColor = new Color(0.6941f, 0.6941f, 0.6902f, 0.1922f); colors.colorMultiplier = 1.0f; colors.fadeDuration = 0.1f; part1.Colors = colors; part1.TargetGraphic = inner_text.GetComponent <TextMeshProUGUI>(); button.AddLayerToMainPart(part0); button.AddLayerToMainPart(part1); return(transform); }
public static RectTransform Frame(RectTransform parent) { GameObject obj = new GameObject("ToyBox.Frame"); RectTransform transform = obj.AddComponent <RectTransform>(); transform.SetParent(parent, false); transform.anchorMin = new Vector2(0.0f, 0.0f); transform.anchorMax = new Vector2(1.0f, 1.0f); transform.pivot = new Vector2(0.5f, 0.5f); transform.offsetMin = new Vector2(-16.0f, -16.0f); transform.offsetMax = new Vector2(16.0f, 16.0f); HorizontalLayoutGroupWorkaround group = obj.AddComponent <HorizontalLayoutGroupWorkaround>(); group.SetLayoutHorizontal(); group.childControlWidth = true; group.childControlHeight = true; group.childForceExpandWidth = false; group.childForceExpandHeight = false; group.childScaleWidth = false; group.childScaleHeight = false; group.childAlignment = TextAnchor.UpperRight; group.spacing = DefaultSpacing; group.padding = new RectOffset(left: 0, bottom: 0, right: 16, top: 8); LayoutElement layout = obj.AddComponent <LayoutElement>(); layout.ignoreLayout = true; layout.minWidth = -1.0f; layout.minHeight = -1.0f; layout.preferredWidth = -1.0f; layout.preferredHeight = -1.0f; layout.flexibleWidth = 1.0f; layout.flexibleHeight = 1.0f; CanvasRenderer renderer = obj.AddComponent <CanvasRenderer>(); Image image = obj.AddComponent <Image>(); image.sprite = crUI.FrameBackgroundImage?.sprite; DraggbleWindow drag = obj.AddComponent <DraggbleWindow>(); AccessTools .DeclaredField(typeof(DraggbleWindow), "m_OwnRectTransform") .SetValue(drag, parent); AccessTools .DeclaredField(typeof(DraggbleWindow), "m_ParentRectTransform") .SetValue(drag, parent.parent); RectTransform close = crUI.Button(transform, "Close"); LayoutElement close_layout = close.GetComponent <LayoutElement>(); close_layout.minWidth = 64.0f; close_layout.minHeight = 32.0f; close_layout.preferredWidth = close_layout.minWidth; close_layout.preferredHeight = close_layout.minHeight; close_layout.flexibleWidth = 0.0f; close_layout.flexibleHeight = 0.0f; OwlcatButton button = close.GetComponent <OwlcatButton>(); Button.ButtonClickedEvent evt = AccessTools .DeclaredField(typeof(OwlcatButton), "m_OnLeftClick").GetValue(button) as Button.ButtonClickedEvent; evt.AddListener(() => { parent.gameObject.SetActive(false); }); return(transform); }