//////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /// <summary> /// Add a button to the grid /// </summary> /// <param name="p_Name">Button caption</param> /// <param name="p_Action">Button callback</param> private Button AddButton(string p_Name, Action p_Action) { var l_Button = m_ButtonCreator.CreateObject(m_ButtonGrid.transform); l_Button.GetComponentInChildren <TextMeshProUGUI>().text = p_Name; l_Button.GetComponent <Button>().onClick.RemoveAllListeners(); l_Button.GetComponent <Button>().onClick.AddListener(() => p_Action()); l_Button.GetComponent <LayoutElement>().preferredWidth = 35f; l_Button.GetComponent <LayoutElement>().preferredHeight = 10f; HoverHint l_HoverHint = l_Button.gameObject.AddComponent <HoverHint>(); l_HoverHint.text = p_Name; l_HoverHint.SetField("_hoverHintController", Resources.FindObjectsOfTypeAll <HoverHintController>().First()); return(l_Button.GetComponent <Button>()); }
//////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /// <summary> /// Create a button /// </summary> /// <param name="p_Parent">Parent transform</param> /// <param name="p_Text">Button caption</param> /// <param name="p_Action">Button callback</param> /// <param name="p_HoverHint">Hover hint text</param> /// <param name="p_PreferedWidth">Prefered width</param> /// <param name="p_PreferedHeight">Prefered height</param> public static UnityEngine.UI.Button Create(UnityEngine.Transform p_Parent, string p_Text, Action p_Action, string p_HoverHint = null, float?p_PreferedWidth = null, float?p_PreferedHeight = null) { if (m_ButtonCreator == null) { m_ButtonCreator = new BeatSaberMarkupLanguage.Tags.ButtonTag(); } var l_ButtonObject = m_ButtonCreator.CreateObject(p_Parent); l_ButtonObject.SetActive(false); l_ButtonObject.GetComponentInChildren <TextMeshProUGUI>().text = p_Text; var l_Button = l_ButtonObject.GetComponent <UnityEngine.UI.Button>(); l_Button.onClick.RemoveAllListeners(); l_Button.onClick.AddListener(() => p_Action()); if (p_PreferedWidth.HasValue) { l_ButtonObject.GetComponent <UnityEngine.UI.LayoutElement>().preferredWidth = p_PreferedWidth.Value; } if (p_PreferedHeight.HasValue) { l_ButtonObject.GetComponent <UnityEngine.UI.LayoutElement>().preferredHeight = p_PreferedHeight.Value; } if (!string.IsNullOrEmpty(p_HoverHint)) { HMUI.HoverHint l_HoverHint = l_ButtonObject.GetComponent <HMUI.HoverHint>() ?? l_ButtonObject.AddComponent <HMUI.HoverHint>(); l_HoverHint.text = p_HoverHint; l_HoverHint.SetField("_hoverHintController", UnityEngine.Resources.FindObjectsOfTypeAll <HMUI.HoverHintController>().First()); } l_ButtonObject.SetActive(true); return(l_ButtonObject.GetComponent <UnityEngine.UI.Button>()); }