Exemplo n.º 1
0
        private GameObject CreateMenuButton(string name, UnityEngine.Events.UnityAction callback, string iconPath, string label)
        {
            // clone & modify button
            if (!HomeSystem.instance.studyActor)
            {
                throw new Exception("HomeSystem.instance.studyActor is null");
            }
            var studySkillButton = Common.GetChild(HomeSystem.instance.studyActor, "StudySkill,0");

            if (!studySkillButton)
            {
                throw new Exception("Failed to get child 'StudySkill,0' from HomeSystem.instance.studyActor");
            }

            var goMenuButton = UnityEngine.Object.Instantiate(studySkillButton, this.menu.transform);

            goMenuButton.SetActive(true);
            goMenuButton.name = name;
            goMenuButton.tag  = "Untagged";

            var button = goMenuButton.AddComponent <Button>();

            button.onClick.AddListener(callback);
            goMenuButton.AddComponent <PointerClick>();

            // modify button background
            var buttonBack = Common.GetChild(goMenuButton, "StudyEffectBack");

            if (!buttonBack)
            {
                throw new Exception("Failed to get child 'StudyEffectBack' from 'StudySkill,0'");
            }
            buttonBack.name = "MajordomoMenuButtonBack";

            var image = buttonBack.GetComponent <Image>();

            image.color = MajordomoWindow.MENU_BTN_BG_COLOR_UNSELECTED;

            var rectTransform = buttonBack.GetComponent <RectTransform>();

            rectTransform.anchorMin = new Vector2(0, 0);
            rectTransform.anchorMax = new Vector2(1, 0);
            rectTransform.offsetMin = new Vector2(0, 0);
            rectTransform.offsetMax = new Vector2(0, 30);

            // modify button icon
            var buttonIcon = Common.GetChild(goMenuButton, "StudySkillIcon,0");

            if (!buttonIcon)
            {
                throw new Exception("Failed to get child 'StudySkillIcon,0' from 'StudySkill,0'");
            }
            buttonIcon.name = "MajordomoMenuButtonIcon";

            rectTransform           = buttonIcon.GetComponent <RectTransform>();
            rectTransform.anchorMin = new Vector2(0, 1);
            rectTransform.anchorMax = new Vector2(1, 1);
            rectTransform.offsetMin = new Vector2(25, -80);
            rectTransform.offsetMax = new Vector2(-25, -20);

            var buttonIconImage = buttonIcon.GetComponent <Image>();

            buttonIconImage.sprite = ResourceLoader.CreateSpriteFromImage(iconPath);
            if (!buttonIconImage.sprite)
            {
                throw new Exception($"Failed to create sprite: {iconPath}");
            }

            // modify button text
            var buttonText = Common.GetChild(goMenuButton, "StudyEffectText");

            if (!buttonText)
            {
                throw new Exception("Failed to get child 'StudyEffectText' from 'StudySkill,0'");
            }
            buttonText.name = "MajordomoMenuButtonText";

            rectTransform           = buttonText.GetComponent <RectTransform>();
            rectTransform.anchorMin = new Vector2(0, 0);
            rectTransform.anchorMax = new Vector2(1, 0);
            rectTransform.offsetMin = new Vector2(0, 0);
            rectTransform.offsetMax = new Vector2(0, 30);

            var text = buttonText.GetComponent <Text>();

            if (!text)
            {
                throw new Exception("Failed to get Text component from 'StudyEffectText'");
            }
            text.text  = label;
            text.color = MajordomoWindow.MENU_BTN_COLOR_UNSELECTED;
            TaiwuCommon.SetFont(text);

            Common.RemoveComponent <SetFont>(buttonText);

            return(goMenuButton);
        }