public static GameObject CreateButton(Transform aParent)
        {
            var go = DefaultControls.CreateButton(GetStandardResources());

            go.transform.SetParent(aParent);
            return(go);
        }
Exemple #2
0
    void initData()
    {
        RectTransform content = svContent.Find("Viewport/Content").GetComponent <RectTransform> ();

        DefaultControls.Resources res = new DefaultControls.Resources();
//		res.standard = UnityEditor.AssetDatabase.GetBuiltinExtraResource<Sprite>("UI/Skin/UISprite.psd");
//		res.standard = Resources.GetBuiltinResource(typeof(Sprite), "Resources/unity_builtin_extra/UISprite.psd") as Sprite;
        Vector2 btnSize = new Vector2(200, 40);

        foreach (string eventName in eventNameList)
        {
            Button button = DefaultControls.CreateButton(res).GetComponent <Button> ();
//			button.image.sprite = res.standard;
            button.GetComponent <RectTransform> ().sizeDelta = btnSize;

            Text txtTitle = button.transform.Find("Text").GetComponent <Text> ();
            txtTitle.fontSize = 16;
            txtTitle.text     = eventName;

            button.onClick.AddListener(delegate {
                buttonClick(button);
            });
            button.transform.SetParent(content);
        }

        int margin = 10;

        content.sizeDelta = new Vector2(content.sizeDelta.x,
                                        eventNameList.Count * (btnSize.y + margin));
    }
Exemple #3
0
    // Start is called before the first frame update
    void Start()
    {
        controllableFound      = null;
        controllables          = FindObjectsOfType <MonoBehaviour>().OfType <IControllable>().ToArray();
        startingOrientation    = Camera.main.transform.rotation;
        workingOrientation     = startingOrientation;
        startingCameraPosition = Camera.main.transform.position;
        workingCameraPosition  = startingCameraPosition;

        // Canvas
        myGO      = new GameObject();
        myGO.name = "Canvas";
        myGO.AddComponent <Canvas>();

        myCanvas            = myGO.GetComponent <Canvas>();
        myCanvas.renderMode = RenderMode.ScreenSpaceOverlay;
        //myCanvas.gameObject.layer = LayerMask.NameToLayer("UI");
        myGO.AddComponent <CanvasScaler>();
        myGO.AddComponent <GraphicRaycaster>();

        newButton = DefaultControls.CreateButton(new DefaultControls.Resources());
        newButton.transform.SetParent(myCanvas.transform, false);
        newButton.GetComponentInChildren <Text>().text = "Reset Button";
        newButton.GetComponentInChildren <RectTransform>().anchoredPosition = new Vector2(0, -200);
        //UnityEventTools.AddPersistentListener(newButton.GetComponent<Button>().onClick, new UnityAction(ResetPositions));
        newButton.GetComponent <Button>().onClick.AddListener(ResetPositions);
    }
Exemple #4
0
        public static Button CreateButton(string objectName = "New Button", Transform parent = null, string buttonText = "Button", bool autoFit = true, int textSize = 15)
        {
            GameObject go = DefaultControls.CreateButton(resources);

            go.name = objectName;

            Text text = go.GetComponentInChildren <Text>(true);

            text.font = defaultFont;

            if (!autoFit)
            {
                text.fontSize = textSize; text.resizeTextMinSize = 15;
            }
            else
            {
                text.resizeTextForBestFit = autoFit;
                text.resizeTextMinSize    = 2;
                text.resizeTextMaxSize    = 100;
            }
            text.alignment = TextAnchor.MiddleCenter;
            text.rectTransform.SetRect(Vector2.zero, Vector2.one, new Vector2(2f, 2f), new Vector2(-2f, -2f));
            text.text = buttonText;
            go.transform.SetParent(parent, false);

            return(go.GetComponent <Button>());
        }
Exemple #5
0
    static public void AddButton(MenuCommand menuCommand)
    {
        GameObject go;

        using (new FactorySwapToEditor())
            go = DefaultControls.CreateButton(MenuOptions.GetStandardResources());
        MenuOptions.PlaceUIElementRoot(go, menuCommand);
    }
Exemple #6
0
 public InventoryItem(string name)
 {
     buttonObject = DefaultControls.CreateButton(SceneManager.uiResources);
     button       = buttonObject.GetComponent <Button>();
     button.name  = "Button";
     this.name    = name;
     button.onClick.AddListener(delegate { callback(); });
 }
        static public void AddImageButton()
        {
            var go = DefaultControls.CreateButton(Res);

            ToScene(go);
            var text = go.transform.GetComponentInChildren <Text>();

            DestroyImmediate(text.gameObject);
        }
        /// <summary>
        /// Create long click button
        /// </summary>
        public static GameObject CreateLongClickButton(Resources resources)
        {
            GameObject lcButton = DefaultControls.CreateButton(convertToDefaultResources(resources));

            lcButton.name = "LongClickButton";
            lcButton.transform.Find("Text").GetComponent <Text>().text = "长击按钮";
            Object.DestroyImmediate(lcButton.GetComponent <Button>());
            lcButton.AddComponent <LongClickButton>();
            return(lcButton);
        }
Exemple #9
0
        static GameObject CreateTab(DefaultControls.Resources resources)
        {
            var button = DefaultControls.CreateButton(GetStandardResources());

            Object.DestroyImmediate(button.GetComponent <Button>());
            button.AddComponent <TabItem>();
            button.name = "Tab";
            button.AddComponent <LayoutElement>();
            return(button);
        }
Exemple #10
0
    public static GameObject CreateDoubleClickButton(DefaultControls.Resources resources)
    {
        GameObject dcButton = DefaultControls.CreateButton(convertToDefaultResources(resources));

        dcButton.name = "DoubleClickButton";
        dcButton.transform.Find("Text").GetComponent <Text>().text = "双击按钮";
        Object.DestroyImmediate(dcButton.GetComponent <Button>());
        dcButton.AddComponent <DoubleClickButton>();
        return(dcButton);
    }
Exemple #11
0
        static GameObject CreateButtonEx(UIResources resources)
        {
            GameObject button = DefaultControls.CreateButton(UIDefaultControls.ConvertToDefaultResources(resources));

            button.name = "ButtonEx";
            button.transform.Find("Text").GetComponent <Text>().text = "ButtonEx";
            button.AddComponent <DoubleClickable>();
            button.AddComponent <LongPressable>();
            return(button);
        }
Exemple #12
0
    public static void CreateTree()
    {
        GameObject parent = Selection.activeGameObject;

        RectTransform tree = new GameObject("Tree").AddComponent <RectTransform>();

        tree.SetParent(parent.transform);
        tree.localPosition = Vector3.zero;
        tree.gameObject.AddComponent <XFramework.UI.Tree>();
        tree.sizeDelta = new Vector2(180, 30);

        // 设置模板
        RectTransform itemTemplate = new GameObject("NodeTemplate").AddComponent <RectTransform>();

        itemTemplate.SetParent(tree);
        itemTemplate.pivot            = new Vector2(0, 1);
        itemTemplate.anchorMin        = new Vector2(0, 1);
        itemTemplate.anchorMax        = new Vector2(0, 1);
        itemTemplate.anchoredPosition = new Vector2(0, 0);
        itemTemplate.sizeDelta        = new Vector2(180, 30);

        RectTransform button = DefaultControls.CreateButton(GetStandardResources()).GetComponent <RectTransform>();

        button.SetParent(itemTemplate);
        button.anchoredPosition = new Vector2(10, 0);
        button.sizeDelta        = new Vector2(160, 30);

        RectTransform toggle = DefaultControls.CreateToggle(GetStandardResources()).GetComponent <RectTransform>();

        toggle.SetParent(itemTemplate);
        Object.DestroyImmediate(toggle.Find("Label").gameObject);
        toggle.anchoredPosition = new Vector2(-80, 0);
        toggle.sizeDelta        = new Vector2(20, 20);

        RectTransform child = new GameObject("Child").AddComponent <RectTransform>();

        child.SetParent(itemTemplate);
        child.pivot            = new Vector2(0, 1);
        child.anchorMin        = new Vector2(0, 1);
        child.anchorMax        = new Vector2(0, 1);
        child.sizeDelta        = Vector2.zero;
        child.anchoredPosition = new Vector2(20, -30);


        // 设置树的跟结点位置
        RectTransform treeRoot = new GameObject("Root").AddComponent <RectTransform>();

        treeRoot.SetParent(tree);
        treeRoot.pivot            = new Vector2(0, 1);
        treeRoot.anchorMin        = new Vector2(0, 1);
        treeRoot.anchorMax        = new Vector2(0, 1);
        treeRoot.anchoredPosition = new Vector2(0, 0);
        treeRoot.sizeDelta        = new Vector2(0, 0);
    }
    private GameObject CreateUIButton <T>(string text, float xSize, float ySize, float xPos, float yPos, GameObject contentHolder, string id, T value, ButtonDelegate <T> func)
    {
        var uiButton = DefaultControls.CreateButton(uiResources);

        uiButton.transform.SetParent(contentHolder.transform, false);
        uiButton.GetComponent <RectTransform>().sizeDelta     = new Vector2(xSize, ySize);
        uiButton.GetComponent <RectTransform>().localPosition = new Vector2(xPos, yPos);
        uiButton.GetComponentInChildren <Text>().text         = text;
        uiButton.GetComponent <Button>().onClick.AddListener(() => func(id, value));
        return(uiButton);
    }
Exemple #14
0
        private static void CreateGButton(MenuCommand menuCommand)
        {
            GameObject element = DefaultControls.CreateButton(GetResource());
            var        parent  = menuCommand.context as GameObject;
            bool       explicitParentChoice = true;

            if (parent == null)
            {
                parent = GetOrCreateCanvasGameObject();
                explicitParentChoice = false;

                PrefabStage prefabStage = PrefabStageUtility.GetCurrentPrefabStage();
                if (prefabStage != null && !prefabStage.IsPartOfPrefabContents(parent))
                {
                    parent = prefabStage.prefabContentsRoot;
                }
            }
            if (parent.GetComponentsInParent <Canvas>(true).Length == 0)
            {
                GameObject canvas = CreateNewUI();
                canvas.transform.SetParent(parent.transform, false);
                parent = canvas;
            }

            SceneManager.MoveGameObjectToScene(element, parent.scene);

            Undo.RegisterCreatedObjectUndo(element, "Create " + element.name);

            if (element.transform.parent == null)
            {
                Undo.SetTransformParent(element.transform, parent.transform, "Parent " + element.name);
            }

            GameObjectUtility.EnsureUniqueNameForSibling(element);

            Undo.SetCurrentGroupName("Create " + element.name);

            GameObjectUtility.SetParentAndAlign(element, parent);
            if (!explicitParentChoice)
            {
                SetPositionVisibleinSceneView(parent.GetComponent <RectTransform>(), element.GetComponent <RectTransform>());
            }

            Selection.activeGameObject = element;

            element.AddComponent <GButton>();

            element.GetComponent <Button>().transition = Selectable.Transition.None;
        }
        private static void CreateUIButton()
        {
            var active = Selection.activeObject as GameObject;

            if (!active)
            {
                return;
            }

            var root = active.transform;
            var go   = DefaultControls.CreateButton(GetStandardResources());

            go.AddComponent <UIButtonDoTween>();
            go.transform.SetParent(root);
        }
        private static void Postfix(ref FejdStartup __instance)
        {
            // logo
            if (Configuration.Current.ValheimPlus.IsEnabled && Configuration.Current.ValheimPlus.mainMenuLogo)
            {
                GameObject logo = GameObject.Find("LOGO");
                logo.GetComponent <Image>().sprite = VPlusMainMenu.VPlusLogoSprite;
            }

            // version text for bottom right of startup
            __instance.m_versionLabel.fontSize = 14;
            string gameVersion = Version.CombineVersion(global::Version.m_major, global::Version.m_minor, global::Version.m_patch);

            __instance.m_versionLabel.text = "version " + gameVersion + "\n" + "ValheimPlus " + ValheimPlusPlugin.version;


            if (Configuration.Current.ValheimPlus.IsEnabled && Configuration.Current.ValheimPlus.serverBrowserAdvertisement)
            {
                DefaultControls.Resources uiResources = new DefaultControls.Resources();
                GameObject joinpanel = GameObjectAssistant.GetChildComponentByName <Transform>("JoinPanel", __instance.m_startGamePanel).gameObject;
                if (joinpanel)
                {
                    foreach (Transform panel in joinpanel.transform)
                    {
                        if (panel.gameObject.name == "Server help")
                        {
                            GameObject serverHelpObj = panel.gameObject;
                            GameObject banner        = GameObject.Instantiate(serverHelpObj);
                            banner.transform.SetParent(joinpanel.transform, false);
                            banner.transform.localPosition = banner.transform.localPosition + new Vector3(0, -300);
                            banner.GetComponent <RectTransform>().sizeDelta         = new Vector2(315, 315);
                            banner.transform.GetChild(0).GetComponent <Text>().text = "";
                            banner.transform.GetChild(1).gameObject.SetActive(false);
                            GameObject bannerButton = DefaultControls.CreateButton(uiResources);
                            bannerButton.transform.SetParent(banner.transform, false);
                            bannerButton.GetComponentInChildren <Text>().text     = "";
                            bannerButton.GetComponent <RectTransform>().sizeDelta = new Vector2(315, 315);
                            bannerButton.GetComponent <Button>().image.sprite     = VPlusMainMenu.VPlusBannerSprite;
                            bannerButton.GetComponent <Button>().transition       = Selectable.Transition.SpriteSwap;
                            SpriteState ss = new SpriteState();
                            ss.highlightedSprite = VPlusMainMenu.VPlusBannerHoverSprite;
                            bannerButton.GetComponent <Button>().spriteState = ss;
                            bannerButton.GetComponent <Button>().onClick.AddListener(delegate { Application.OpenURL("http://zap-hosting-banner.valheim.plus"); });
                        }
                    }
                }
            }
        }
    public static GameObject CreateDoubleClickButton(DefaultControls.Resources resources)
    {
        GameObject btn = DefaultControls.CreateButton(resources);

        btn.name = "DoubleClickButton";
        btn.transform.Find("Text").GetComponent <Text>().text = "DoubleClickButton";

        Image image = btn.GetComponent <Image>();

        image.sprite = resources.standard;
        image.type   = Image.Type.Sliced;

        Object.DestroyImmediate(btn.GetComponent <Button>());
        btn.AddComponent <DoubleClickButton>();
        return(btn);
    }
        public static void CreateButtonActions()
        {
            GameObject canvas   = CreateSceneObject.GetCanvasGameObject();
            GameObject buttonGO = DefaultControls.CreateButton(CreateSceneObject.GetStandardResources());

            buttonGO.transform.SetParent(canvas.transform, false);

            Button  button        = buttonGO.GetComponent <Button>();
            Graphic targetGraphic = button.targetGraphic;

            DestroyImmediate(button);
            ButtonActions buttonActions = buttonGO.AddComponent <ButtonActions>();

            buttonActions.targetGraphic = targetGraphic;
            Selection.activeGameObject  = buttonGO;
        }
Exemple #19
0
        static public void AddButton(MenuCommand menuCommand)
        {
            GameObject go = DefaultControls.CreateButton(GetStandardResources());

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

            image.sprite   = CustomizeUGUICreate.GetDefalutSprite(image.gameObject) ? CustomizeUGUICreate.GetDefalutSprite(image.gameObject) : image.sprite;
            image.material = CustomizeUGUICreate.GetDefalutMaterial(image.gameObject) ? CustomizeUGUICreate.GetDefalutMaterial(image.gameObject) : image.material;

            var text = go.transform.GetChild(0).GetComponent <Text>();

            text.supportRichText = CustomizeUGUICreate.IsRich;
            text.raycastTarget   = CustomizeUGUICreate.IsRayCastTarget;
            text.material        = CustomizeUGUICreate.GetDefalutMaterial(text.gameObject) ? CustomizeUGUICreate.GetDefalutMaterial(text.gameObject) : text.material;

            PlaceUIElementRoot(go, menuCommand);
        }
    private static Transform _Button()
    {
        GameObject go = DefaultControls.CreateButton(resources);

        go.GetComponent <Image>().sprite = AssetDatabase.GetBuiltinExtraResource <Sprite>("UI/Skin/UISprite.psd");

        Object.DestroyImmediate(go.GetComponentInChildren <Text>());
        GameObject txt = go.transform.Find("Text").gameObject;

        txt.AddComponent <TextMeshProUGUI>();
        TextMeshProUGUI t = txt.GetComponent <TextMeshProUGUI>();

        t.text      = "Button";
        t.color     = new Color32(50, 50, 50, 255);
        t.alignment = TextAlignmentOptions.Center;
        t.fontSize  = 14;

        return(go.transform);
    }
    public static int CreateButton_s(IntPtr l)
    {
        int result;

        try
        {
            DefaultControls.Resources resources;
            LuaObject.checkValueType <DefaultControls.Resources>(l, 1, out resources);
            GameObject o = DefaultControls.CreateButton(resources);
            LuaObject.pushValue(l, true);
            LuaObject.pushValue(l, o);
            result = 2;
        }
        catch (Exception e)
        {
            result = LuaObject.error(l, e);
        }
        return(result);
    }
        private static SubUIButtonLayoutGroup EditorCreateButtonLayoutGroup <T>(UnityEditor.MenuCommand menuCommand) where T : LayoutGroup
        {
            GameObject             gameObject = new GameObject("ButtonLayoutGroup", typeof(RectTransform), typeof(T), typeof(ContentSizeFitter));
            SubUIButtonLayoutGroup btnLayout  = gameObject.AddComponent <SubUIButtonLayoutGroup>();

            LayoutGroup layoutGroup = gameObject.GetComponent <T>();

            btnLayout.layoutGroup = layoutGroup;

            GameObject itemTemplate = DefaultControls.CreateButton(EditorGetStandardResources());

            itemTemplate.name = "ItemTemplate";
            Text itemTemplateText = itemTemplate.GetComponentInChildren <Text>();

            itemTemplateText.text     = "Template Button";
            itemTemplateText.fontSize = 20;
            //itemTemplate.SetActive(false);
            itemTemplate.transform.SetParent(gameObject.transform, false);
            btnLayout.itemTemplate = itemTemplate;

            ContentSizeFitter fitter = gameObject.GetComponent <ContentSizeFitter>();

            fitter.horizontalFit = ContentSizeFitter.FitMode.PreferredSize;
            fitter.verticalFit   = ContentSizeFitter.FitMode.PreferredSize;

            GameObject parent = menuCommand.context as GameObject;

            if (parent != null)
            {
                gameObject.name = UnityEditor.GameObjectUtility.GetUniqueNameForSibling(parent.transform, gameObject.name);
            }
            UnityEditor.Undo.RegisterCreatedObjectUndo(gameObject, "Create" + gameObject.name);
            if (parent != null)
            {
                UnityEditor.Undo.SetTransformParent(gameObject.transform, parent.transform, "Parent" + gameObject.name);
                UnityEditor.GameObjectUtility.SetParentAndAlign(gameObject, parent);
            }

            UnityEditor.Selection.activeGameObject = gameObject;
            return(btnLayout);
        }
Exemple #23
0
        public static GameObject CreateOptionEntry(string Title, string Name)
        {
            GameObject OptionEntry = DefaultControls.CreateButton(new DefaultControls.Resources());

            OptionEntry.name = Name;
            var OptionEntryImage = OptionEntry.GetComponent <Image>();

            OptionEntryImage.sprite = Option_Content_BG;
            OptionEntryImage.type   = Image.Type.Simple;
            OptionEntryImage.color  = Color.white;
            var OptionEntryButton = OptionEntry.GetComponent <Button>();

            OptionEntryButton.transition  = Selectable.Transition.SpriteSwap;
            OptionEntryButton.spriteState = new SpriteState()
            {
                highlightedSprite = Option_Content_Highlight_BG,
                pressedSprite     = Option_Content_Highlight_BG
            };

            GameObject OptionEntry_Label     = OptionEntry.transform.Find("Text").gameObject;
            var        OptionEntry_LabelText = OptionEntry_Label.GetComponent <Text>();

            OptionEntry_LabelText.text      = Title;
            OptionEntry_LabelText.alignment = TextAnchor.MiddleLeft;
            OptionEntry_LabelText.font      = ExoSemiBold;
            OptionEntry_LabelText.fontSize  = 15;
            OptionEntry_LabelText.color     = Color.white;
            var OptionEntry_LabelRect = OptionEntry_Label.GetComponent <RectTransform>();

            OptionEntry_LabelRect.anchoredPosition3D = new Vector3(-59.7f, 0, 0);
            OptionEntry_LabelRect.anchorMin          = Vector2.zero;
            OptionEntry_LabelRect.anchorMax          = Vector2.one;
            OptionEntry_LabelRect.pivot     = Vector2.one * 0.5f;
            OptionEntry_LabelRect.sizeDelta = new Vector2(-157.9f, 0);
            var OptionEntry_LabelShadow = OptionEntry_Label.AddComponent <Shadow>();

            OptionEntry_LabelShadow.effectColor    = new Color(0, 0, 0, 0.5f);
            OptionEntry_LabelShadow.effectDistance = new Vector2(1f, -1f);

            return(OptionEntry);
        }
Exemple #24
0
        static GameObject CreateArcView(UIResources resources)
        {
            GameObject arc = DefaultControls.CreateImage(UIDefaultControls.ConvertToDefaultResources(resources));

            arc.name = "ArcView";
            Image background = arc.GetComponent <Image>();

            background.enabled       = false;
            background.raycastTarget = false;

            GameObject content = new GameObject("Content", typeof(RectTransform));

            content.transform.SetParent(arc.transform);

            GameObject btnSwitch = DefaultControls.CreateButton(UIDefaultControls.ConvertToDefaultResources(resources));

            btnSwitch.name = "BtnSwitch";
            btnSwitch.transform.SetParent(arc.transform);

            GameObject hotSpot = DefaultControls.CreateImage(UIDefaultControls.ConvertToDefaultResources(resources));

            hotSpot.name = "HotSpot";
            hotSpot.GetComponent <Image>().color = new Vector4(255, 255, 255, 0);
            UIDragable uiDragable = hotSpot.AddComponent <UIDragable>();

            uiDragable.rect = hotSpot.GetComponent <RectTransform>();
            hotSpot.transform.SetParent(arc.transform);
            PassPointerEvent passEvent = hotSpot.AddComponent <PassPointerEvent>();

            passEvent.passPointerClick = true;

            ArcView arcView = arc.AddComponent <ArcView>();

            arcView.panel     = arc.transform as RectTransform;
            arcView.content   = content.transform as RectTransform;
            arcView.hotSpot   = uiDragable;
            arcView.btnSwitch = btnSwitch.GetComponent <Button>();

            return(arc);
        }
Exemple #25
0
    public void createButtons()
    {
        DefaultControls.Resources uiResources = new DefaultControls.Resources();
        GameObject canvas = GameObject.Find("PoseContent");

        for (int j = 0; j < canvas.transform.childCount; j++)
        {
            Destroy(canvas.transform.GetChild(j).gameObject);
        }
        int i = 0;

        canvas.GetComponent <RectTransform>().offsetMin = new Vector2(canvas.GetComponent <RectTransform>().offsetMin.x, 880);
        foreach (string anim in ModLoader.charMods[curChar])
        {
            string     anim2      = anim.Replace('\\', '/');
            GameObject animButton = DefaultControls.CreateButton(uiResources);
            animButton.name = anim2.Substring(anim2.LastIndexOf("/") + 1);
            animButton.transform.SetParent(canvas.transform);
            canvas.GetComponent <RectTransform>().offsetMin            = new Vector2(canvas.GetComponent <RectTransform>().offsetMin.x, canvas.GetComponent <RectTransform>().offsetMin.y - 200);
            animButton.GetComponent <RectTransform>().anchorMax        = new Vector2(0.5f, 1);
            animButton.GetComponent <RectTransform>().anchorMin        = new Vector2(0.5f, 1);
            animButton.GetComponent <RectTransform>().anchoredPosition = new Vector3(0, -100 - i * 200, 0);
            animButton.GetComponent <RectTransform>().sizeDelta        = new Vector2(200, 200);
            int k = i;
            animButton.GetComponent <Button>().onClick.AddListener(() => {
                PoseSwitch(curChar, k);
            });
            i += 1;
            animButton.GetComponentInChildren <Text>().text      = i.ToString();
            animButton.GetComponentInChildren <Text>().fontSize  = 72;
            animButton.GetComponentInChildren <Text>().font      = font;
            animButton.GetComponentInChildren <Text>().color     = Color.white;
            animButton.GetComponent <Image>().sprite             = sprite;
            animButton.GetComponent <RectTransform>().localScale = new Vector3(1, 1, 1);
        }
    }
Exemple #26
0
    // Start is called before the first frame update
    IEnumerator LoadAll()
    {
        string[] charDirs;
        string   modsDir;

        //Identify mods and character directories
        if (Application.platform != RuntimePlatform.Android)
        {
            modsDir  = Application.dataPath + "/../mods/";
            charDirs = Directory.GetDirectories(modsDir, "CHAR_*");
            if (!Directory.Exists(modsDir + "/../logs"))
            {
                Directory.CreateDirectory(modsDir + "/../logs");
            }
            logFile = modsDir + "../logs/" + DateTime.Now.ToString("ddMMyy_HHmmss") + ".txt";
        }
        else
        {
            if (!Permission.HasUserAuthorizedPermission(Permission.ExternalStorageWrite) && !Permission.HasUserAuthorizedPermission(Permission.ExternalStorageRead))
            {
                // Ask for permission or proceed without the functionality enabled.
                Permission.RequestUserPermission(Permission.ExternalStorageRead);
                Permission.RequestUserPermission(Permission.ExternalStorageWrite);
            }

            if (!Directory.Exists(GetAndroidInternalFilesDir() + "/.4PUnity"))
            {
                Directory.CreateDirectory(GetAndroidInternalFilesDir() + "/.4PUnity");
                File.Create(GetAndroidInternalFilesDir() + "/.4PUnity/.nomedia");
            }
            if (!Directory.Exists(GetAndroidInternalFilesDir() + "/.4PUnity/music"))
            {
                Directory.CreateDirectory(GetAndroidInternalFilesDir() + "/.4PUnity/music");
            }
            if (!Directory.Exists(GetAndroidInternalFilesDir() + "/.4PUnity/logs"))
            {
                Directory.CreateDirectory(GetAndroidInternalFilesDir() + "/.4PUnity/logs");
            }
            modsDir  = GetAndroidInternalFilesDir() + "/.4PUnity/";
            charDirs = Directory.GetDirectories(modsDir, "CHAR_*");
            logFile  = modsDir + "logs/" + DateTime.Now.ToString("ddMMyy_HHmmss") + ".txt";
        }

        //Load music
        List <string> musicFiles = new List <string>(Directory.GetFiles(modsDir + "music", "*.ogg"));

        musicFiles.AddRange(Directory.GetFiles(modsDir + "music", "*.mp3"));

        Dropdown      mdd     = GameObject.Find("MusicDropdown").GetComponent <Dropdown>();
        List <string> options = new List <string>();

        foreach (string track in musicFiles)
        {
            string          track2 = track.Replace('\\', '/');
            UnityWebRequest rq     = UnityWebRequestMultimedia.GetAudioClip("file://" + track2, AudioType.OGGVORBIS);
            rq.SendWebRequest();
            while (rq.downloadProgress < 1)
            {
                ;
            }
            yield return(rq);

            string trackName = track2.Substring(track2.LastIndexOf("/") + 1);
            trackName = trackName.Substring(0, trackName.Length - 4);
            music.Add(((DownloadHandlerAudioClip)rq.downloadHandler).audioClip);
            options.Add(trackName);
        }
        mdd.ClearOptions();
        mdd.AddOptions(options);
        mdd.onValueChanged.AddListener((int a) => { GameObject.Find("EventSystem").GetComponent <UI>().MusicChange(a); });

        GameObject cam = GameObject.Find("MainCam");

        cam.GetComponent <AudioSource>().clip = music[0];
        cam.GetComponent <AudioSource>().loop = true;

        GameObject canvas = GameObject.Find("CharContent");

        DefaultControls.Resources uiResources = new DefaultControls.Resources();
        var i = 0;

        VP vpClass = GameObject.Find("EventSystem").GetComponent <VP>();

        foreach (string ch in charDirs)
        {
            string     charName   = ch.Replace('\\', '/').Substring(ch.LastIndexOf('_') + 1);
            GameObject charButton = DefaultControls.CreateButton(uiResources);
            charButton.name = charName;
            charButton.transform.SetParent(canvas.transform);
            canvas.GetComponent <RectTransform>().offsetMin            = new Vector2(canvas.GetComponent <RectTransform>().offsetMin.x, canvas.GetComponent <RectTransform>().offsetMin.y + 200);
            charButton.GetComponent <RectTransform>().anchorMax        = new Vector2(0.5f, 0);
            charButton.GetComponent <RectTransform>().anchorMin        = new Vector2(0.5f, 0);
            charButton.GetComponent <RectTransform>().anchoredPosition = new Vector3(0, -100 - i * 200, 0);
            charButton.GetComponent <RectTransform>().sizeDelta        = new Vector2(200, 200);
            Destroy(charButton.transform.GetChild(0).gameObject);
            Debug.Log(Directory.GetFiles(ch, charName + ".png")[0]);
            charButton.GetComponent <Image>().sprite = LoadNewSprite(Directory.GetFiles(ch, charName + ".png")[0]);
            charButton.GetComponent <Button>().onClick.AddListener(() => { vpClass.PoseSwitch(charName, vpClass.curAnim); });
            charButton.GetComponent <RectTransform>().localScale = new Vector3(1, 1, 1);
            i++;
            List <string> files = new List <string>(Directory.GetFiles(ch, "*.mp4"));
            files.Sort();
            charMods.Add(charName, files);
        }

        GameObject camera = GameObject.Find("MainCam");

        bool firstVp = true;

        foreach (KeyValuePair <string, List <string> > charAnims in ModLoader.charMods)
        {
            List <VideoPlayer> players = new List <VideoPlayer>();
            foreach (string file in charAnims.Value)
            {
                //VideoPlayer vp = camera.AddComponent<VideoPlayer>();
                //vp.waitForFirstFrame = true;
                //vp.isLooping = true;
                //vp.aspectRatio = VideoAspectRatio.FitVertically;
                //vp.loopPointReached += vpClass.Looped;
                //vp.prepareCompleted += vpClass.Prepared;
                //vp.audioOutputMode = VideoAudioOutputMode.Direct;
                //vp.SetDirectAudioVolume(0, 1);
                //vp.url = file;
                //vp.Prepare();
                //while (!vp.isPrepared) yield return null;
                //loadedMods++;
                //currentLoaded -= fraction;
                //loadingBar.offsetMax = new Vector2(-currentLoaded, 10f);
                //loadingText.text = loadedMods + "/" + totalMods;
                //players.Add(vp);
                if (firstVp)
                {
                    firstVp         = false;
                    vpClass.curChar = charAnims.Key;
                    vpClass.curAnim = 0;
                }
            }
            VP.vps.Add(charAnims.Key, players);
            VP.charList.Add(charAnims.Key);
            Debug.Log(VP.vps);
        }

        Application.logMessageReceived += LogHandler;
        loaded = true;
    }
        /// <summary>
        /// Create Color Picker
        /// </summary>
        /// <param name="resources"></param>
        /// <returns></returns>
        public static GameObject CreateColorPicker(Resources resources)
        {
            GameObject colorPicker = CreateUIElementRoot("ColorPicker", _defaultColorPicker);
            var        mainCT      = colorPicker.AddComponent <ColoredTape>();

            mainCT.TapeDirection = ColoredTape.E_DrawDirection.Vertical;
            mainCT.SetColors(new Color[] { new Color(0.8f, 0.8f, 0.8f, 1), new Color(0, 0.7f, 1, 1) });

            #region 主色板
            //MainColor 主色板
            var mainColor = CreateUIObject("MainColor", colorPicker.transform, new Vector2(185, 22)).AddComponent <MainColorTape>().gameObject.transform;
            mainColor.localPosition = new Vector3(16.2f, 188.2f);
            #endregion

            #region 吸管
            //Sucker 吸管
            var sucker = CreateUIObject("ColorSucker", colorPicker.transform, new Vector2(22, 22));
            sucker.AddComponent <SuckerImage>();
            sucker.AddComponent <Button>();
            sucker.transform.localPosition    = new Vector3(-95.6f, 186.8f);
            sucker.transform.localEulerAngles = new Vector3(0, 0, 321.0f);
            #endregion

            #region 调色板
            //Color Palette 调色板
            var colorPalette = CreateUIObject("ColorPalette", colorPicker.transform, new Vector2(150, 150));
            colorPalette.AddComponent <ColorPalette>();
            colorPalette.transform.localPosition = new Vector3(-11.5f, 75);
            //第一层色带
            var firstCTGO = CreateUIObject("FirstLayerColoredTape", colorPalette.transform, new Vector2(150, 150));
            var fisrtCT   = firstCTGO.AddComponent <ColoredTape>();
            fisrtCT.TapeDirection = ColoredTape.E_DrawDirection.Horizontal;;
            fisrtCT.OuelineWidth  = 0.8f;
            fisrtCT.SetColors(new Color[] { Color.white, Color.red });
            //第二层色带
            var secondCTGO = CreateUIObject("SecondLayerColoredTape", colorPalette.transform, new Vector2(150, 150));
            var secondCT   = secondCTGO.AddComponent <ColoredTape>();
            secondCT.Outline = false;
            secondCT.SetColors(new Color[] { new Color(0, 0, 0, 0), Color.black });
            //多色色带
            var multiCTGO = CreateUIObject("MultiColoredTape", colorPalette.transform, new Vector2(150, 150));
            var multiCT   = multiCTGO.AddComponent <MultiColoredTape>();
            multiCT.OuelineWidth = 0.8f;
            multiCT.SetColors(new Color[] { Color.yellow, Color.white, Color.red, Color.magenta });
            multiCTGO.SetActive(false);
            //左侧文字
            var leftText = DefaultControls.CreateText(convertToDefaultResources(resources));
            leftText.name = "LeftText";
            leftText.GetComponent <Text>().alignment = TextAnchor.MiddleCenter;
            leftText.GetComponent <Text>().fontSize  = 10;
            leftText.GetComponent <Text>().text      = "Brightness";
            leftText.transform.SetParent(colorPalette.transform);
            leftText.GetComponent <RectTransform>().sizeDelta = new Vector2(143.6f, 17.1f);
            leftText.transform.localPosition    = new Vector3(-86.17f, 1.7f);
            leftText.transform.localEulerAngles = new Vector3(0, 0, 90);
            //底部文字
            var bottomtText = DefaultControls.CreateText(convertToDefaultResources(resources));
            bottomtText.name = "BottomText";
            bottomtText.GetComponent <Text>().alignment = TextAnchor.MiddleCenter;
            bottomtText.GetComponent <Text>().fontSize  = 10;
            bottomtText.GetComponent <Text>().text      = "Saturation";
            bottomtText.transform.SetParent(colorPalette.transform);
            bottomtText.GetComponent <RectTransform>().sizeDelta = new Vector2(143.6f, 17.1f);
            bottomtText.transform.localPosition = new Vector3(0, -87.0f);
            //右侧文字
            var rightText = DefaultControls.CreateText(convertToDefaultResources(resources));
            rightText.name = "RightText";
            rightText.GetComponent <Text>().alignment = TextAnchor.MiddleCenter;
            rightText.GetComponent <Text>().fontSize  = 10;
            rightText.GetComponent <Text>().text      = "Hue";
            rightText.transform.SetParent(colorPalette.transform);
            rightText.GetComponent <RectTransform>().sizeDelta = new Vector2(143.6f, 17.1f);
            rightText.transform.localPosition    = new Vector3(115.64f, 0);
            rightText.transform.localEulerAngles = new Vector3(0, 0, -90);
            //游标
            var nonius = CreateUIObject("ColorNonius", colorPalette.transform, new Vector2(10, 10));
            nonius.AddComponent <ColorNonius>();
            nonius.transform.localPosition = new Vector3(-75, 75);
            #endregion

            #region 颜色拾取功能
            // SuckScreen 截屏
            var suckScreen = CreateUIObject("SuckScreen", colorPicker.transform, new Vector2(160, 160));
            suckScreen.transform.localPosition = new Vector3(0, 75);
            // Texture 截图纹理
            var screenTex = CreateUIObject("Texture", suckScreen.transform, new Vector2(160, 160));
            screenTex.AddComponent <Image>();
            // Mesh 创建网格
            var mesh      = CreateUIObject("Mesh", suckScreen.transform, new Vector2(160, 160));
            var imageMesh = mesh.AddComponent <ImageMesh>();
            imageMesh.XAxisCount     = 16;
            imageMesh.YAxisCount     = 16;
            imageMesh.LineWidth      = 1;
            imageMesh.Color          = Color.gray;
            imageMesh.FocusColor     = Color.red;
            imageMesh.FocuslineWidth = 1;
            suckScreen.SetActive(false);
            #endregion

            #region 垂直滑动条
            //ColoredTape Slider 垂直滑动条
            var verticalSlider = CreateUIObject("ColoredTapeSlider", colorPicker.transform, new Vector2(20, 150));
            verticalSlider.transform.localPosition = new Vector2(80, 75);
            var vSlider = verticalSlider.AddComponent <Slider>();
            vSlider.direction = Slider.Direction.TopToBottom;
            vSlider.value     = 0;
            // firstCT
            var verticaCT = CreateUIObject("FirstLayerColoredTape", verticalSlider.transform, new Vector2(20, 150));
            var vCT       = verticaCT.AddComponent <ColoredTape>();
            vCT.OuelineWidth = 0.8f;
            vCT.SetColors(new Color[] { Color.red, Color.magenta, Color.blue, Color.cyan, Color.green, Color.yellow, Color.red });
            // handle slider area
            var handleArea     = CreateUIObject("Handle Slider Area", verticalSlider.transform, new Vector2(0, 0));
            var handleAreaRect = handleArea.GetComponent <RectTransform>();
            handleAreaRect.anchorMin = Vector2.zero;
            handleAreaRect.anchorMax = Vector2.one;
            var handle     = CreateUIObject("Handle", handleArea.transform, new Vector2(20, 20));
            var handleRect = handle.GetComponent <RectTransform>();
            handleRect.anchorMin = new Vector2(0, 1);
            handleRect.anchorMax = new Vector2(1, 1);
            var sh = handle.AddComponent <SliderHandler>();
            sh.arrowSize          = 5;
            sh.distance           = 10;
            vSlider.targetGraphic = handle.GetComponent <SliderHandler>();
            vSlider.handleRect    = handle.GetComponent <RectTransform>();
            #endregion

            #region 调色板模式按钮
            // Palette Mode Button 调色板模式按钮
            var pmButton = CreateUIObject("PaletteModeButton", colorPicker.transform, new Vector2(12, 9));
            pmButton.transform.localPosition = new Vector3(102.7f, 164.2f);
            var pmButtonTarget = CreateUIObject("Target", pmButton.transform, new Vector2(12, 9));
            pmButtonTarget.AddComponent <Image>();
            pmButton.AddComponent <Button>().targetGraphic = pmButtonTarget.GetComponent <Image>();
            var targetContent = CreateUIObject("GameObject", pmButtonTarget.transform, new Vector2(9, 9));
            targetContent.transform.localPosition = new Vector3(-1.5f, 0);
            var indexCT1 = CreateUIObject("CT1", targetContent.transform, new Vector2(9, 9));
            var indexct  = indexCT1.AddComponent <ColoredTape>();
            indexct.TapeDirection = ColoredTape.E_DrawDirection.Horizontal;
            indexct.SetColors(new Color[] { Color.white, new Color(0.6f, 0, 0.6f, 1) });
            var indexCT2 = CreateUIObject("CT2", targetContent.transform, new Vector2(9, 9));
            indexCT2.AddComponent <ColoredTape>().SetColors(new Color[] { new Color(1, 1, 1, 0), new Color(0, 0, 0, 1) });
            var indexCT = CreateUIObject("CT", pmButtonTarget.transform, new Vector2(3, 9));
            indexCT.transform.localPosition = new Vector2(4.5f, 0);
            indexCT.AddComponent <ColoredTape>().SetColors(new Color[]
            {
                Color.red, Color.magenta, Color.blue, Color.cyan, Color.green, Color.yellow, Color.red
            });
            #endregion

            #region 颜色模式按钮
            // Color Mode Button 颜色模式按钮
            var cmButton = CreateUIObject("ColorModeButton", colorPicker.transform, new Vector2(9, 9));
            cmButton.transform.localPosition = new Vector3(102.7f, -15);
            var cmButtonTarget = CreateUIObject("Target", cmButton.transform, new Vector2(9, 9));
            cmButtonTarget.AddComponent <Image>();
            cmButton.AddComponent <Button>().targetGraphic = cmButtonTarget.GetComponent <Image>();
            var hCT1 = CreateUIObject("CT1", cmButtonTarget.transform, new Vector2(9, 3));
            hCT1.transform.localPosition = new Vector3(0, 3);
            var ct1 = hCT1.AddComponent <ColoredTape>();
            ct1.TapeDirection = ColoredTape.E_DrawDirection.Horizontal;
            ct1.SetColors(new Color[] { Color.red, Color.magenta, Color.blue, Color.cyan, Color.green, Color.yellow, Color.red });
            var hCT2 = CreateUIObject("CT2", cmButtonTarget.transform, new Vector2(9, 3));
            var ct2  = hCT2.AddComponent <ColoredTape>();
            ct2.TapeDirection = ColoredTape.E_DrawDirection.Horizontal;
            ct2.SetColors(new Color[] { Color.white, new Color(0.6f, 0, 0.6f) });
            var hCT3 = CreateUIObject("CT3", cmButtonTarget.transform, new Vector2(9, 3));
            hCT3.transform.localPosition = new Vector3(0, -3);
            var ct3 = hCT3.AddComponent <ColoredTape>();
            ct3.TapeDirection = ColoredTape.E_DrawDirection.Horizontal;
            ct3.SetColors(new Color[] { Color.black, Color.white });
            #endregion

            #region RGBA Inputfield && slider  RGBA四通道
            //
            var rgba = CreateUIObject("RGBA", colorPicker.transform, new Vector2(216, 112));
            rgba.transform.localPosition = new Vector3(0, -80);
            var glg = rgba.AddComponent <GridLayoutGroup>();
            glg.cellSize = new Vector2(216, 28);
            // R
            var rModule = CreateUIObject("R", rgba.transform, new Vector2(216, 28));
            var rText   = CreateUIObject("Text", rModule.transform, new Vector2(18.3f, 28));
            rText.transform.localPosition         = new Vector3(-94.6f, 0);
            rText.AddComponent <Text>().text      = "R";
            rText.GetComponent <Text>().color     = new Color(0.2f, 0.2f, 0.2f, 1);
            rText.GetComponent <Text>().alignment = TextAnchor.MiddleLeft;
            var rValue = DefaultControls.CreateInputField(convertToDefaultResources(resources));
            rValue.GetComponent <RectTransform>().sizeDelta = new Vector2(27.4f, 20);
            rValue.transform.SetParent(rModule.transform);
            rValue.transform.localPosition = new Vector3(94.3f, 0);
            rValue.name = "Value";
            rValue.GetComponent <InputField>().text = "255";
            rValue.transform.Find("Text").GetComponent <Text>().fontSize  = 12;
            rValue.transform.Find("Text").GetComponent <Text>().alignment = TextAnchor.MiddleCenter;
            var rRect = rValue.transform.Find("Text").GetComponent <RectTransform>();
            rRect.sizeDelta = new Vector2(27.4f, 20);
            rRect.anchorMin = Vector2.zero;
            rRect.anchorMax = Vector2.one;
            var rSlider = createColoredTapeSlider(rModule.transform,
                                                  new Color[] { Color.cyan, Color.white });
            rSlider.name = "Slider";
            // G
            var gModule = CreateUIObject("G", rgba.transform, new Vector2(216, 28));
            var gText   = CreateUIObject("Text", gModule.transform, new Vector2(18.3f, 28));
            gText.transform.localPosition         = new Vector3(-94.6f, 0);
            gText.AddComponent <Text>().text      = "G";
            gText.GetComponent <Text>().color     = new Color(0.2f, 0.2f, 0.2f, 1);
            gText.GetComponent <Text>().alignment = TextAnchor.MiddleLeft;
            var gValue = DefaultControls.CreateInputField(convertToDefaultResources(resources));
            gValue.GetComponent <RectTransform>().sizeDelta = new Vector2(27.4f, 20);
            gValue.transform.SetParent(gModule.transform);
            gValue.transform.localPosition = new Vector3(94.3f, 0);
            gValue.name = "Value";
            gValue.GetComponent <InputField>().text = "255";
            gValue.transform.Find("Text").GetComponent <Text>().fontSize  = 12;
            gValue.transform.Find("Text").GetComponent <Text>().alignment = TextAnchor.MiddleCenter;
            var gRect = gValue.transform.Find("Text").GetComponent <RectTransform>();
            gRect.sizeDelta = new Vector2(27.4f, 20);
            gRect.anchorMin = Vector2.zero;
            gRect.anchorMax = Vector2.one;
            var gSlider = createColoredTapeSlider(gModule.transform,
                                                  new Color[] { Color.magenta, Color.white });
            gSlider.name = "Slider";

            // B
            var bModule = CreateUIObject("B", rgba.transform, new Vector2(216, 28));
            var bText   = CreateUIObject("Text", bModule.transform, new Vector2(18.3f, 28));
            bText.transform.localPosition         = new Vector3(-94.6f, 0);
            bText.AddComponent <Text>().text      = "B";
            bText.GetComponent <Text>().color     = new Color(0.2f, 0.2f, 0.2f, 1);
            bText.GetComponent <Text>().alignment = TextAnchor.MiddleLeft;
            var bValue = DefaultControls.CreateInputField(convertToDefaultResources(resources));
            bValue.GetComponent <RectTransform>().sizeDelta = new Vector2(27.4f, 20);
            bValue.transform.SetParent(bModule.transform);
            bValue.transform.localPosition = new Vector3(94.3f, 0);
            bValue.name = "Value";
            bValue.GetComponent <InputField>().text = "255";
            bValue.transform.Find("Text").GetComponent <Text>().fontSize  = 12;
            bValue.transform.Find("Text").GetComponent <Text>().alignment = TextAnchor.MiddleCenter;
            var bRect = bValue.transform.Find("Text").GetComponent <RectTransform>();
            bRect.sizeDelta = new Vector2(27.4f, 20);
            bRect.anchorMin = Vector2.zero;
            bRect.anchorMax = Vector2.one;
            var bSlider = createColoredTapeSlider(bModule.transform,
                                                  new Color[] { Color.yellow, Color.white });
            bSlider.name = "Slider";

            // A
            var aModule = CreateUIObject("A", rgba.transform, new Vector2(216, 28));
            var aText   = CreateUIObject("Text", aModule.transform, new Vector2(18.3f, 28));
            aText.transform.localPosition         = new Vector3(-94.6f, 0);
            aText.AddComponent <Text>().text      = "A";
            aText.GetComponent <Text>().color     = new Color(0.2f, 0.2f, 0.2f, 1);
            aText.GetComponent <Text>().alignment = TextAnchor.MiddleLeft;
            var aValue = DefaultControls.CreateInputField(convertToDefaultResources(resources));
            aValue.GetComponent <RectTransform>().sizeDelta = new Vector2(27.4f, 20);
            aValue.transform.SetParent(aModule.transform);
            aValue.transform.localPosition = new Vector3(94.3f, 0);
            aValue.name = "Value";
            aValue.GetComponent <InputField>().text = "255";
            aValue.transform.Find("Text").GetComponent <Text>().fontSize  = 12;
            aValue.transform.Find("Text").GetComponent <Text>().alignment = TextAnchor.MiddleCenter;
            var aRect = aValue.transform.Find("Text").GetComponent <RectTransform>();
            aRect.sizeDelta = new Vector2(27.4f, 20);
            aRect.anchorMin = Vector2.zero;
            aRect.anchorMax = Vector2.one;
            var aSlider = createColoredTapeSlider(aModule.transform,
                                                  new Color[] { Color.black, Color.white });
            aSlider.name = "Slider";

            #endregion

            #region 十六进制
            // 十六进制显示输入
            var hexColor = CreateUIObject("HexColor", colorPicker.transform, new Vector2(216, 25));
            hexColor.transform.localPosition = new Vector2(2, -154.5f);
            // 创建文字
            var hexText = CreateUIObject("Text", hexColor.transform, new Vector2(137.7f, 24));
            hexText.transform.localPosition = new Vector3(-36.8f, 0);
            var text = hexText.AddComponent <Text>();
            text.fontSize  = 14;
            text.alignment = TextAnchor.MiddleLeft;
            text.text      = "HexColor                 #";
            text.color     = new Color(0.2f, 0.2f, 0.2f, 1);
            // 输入框
            var hexInput = DefaultControls.CreateInputField(convertToDefaultResources(resources));
            hexInput.name = "Value";
            hexInput.transform.SetParent(hexColor.transform);
            hexInput.GetComponent <RectTransform>().sizeDelta = new Vector2(76.9f, 25);
            hexInput.transform.localPosition          = new Vector3(66.85f, 0);
            hexInput.GetComponent <InputField>().text = "FFFFFFFF";
            var textRect = hexInput.transform.Find("Text").GetComponent <RectTransform>();
            textRect.sizeDelta = new Vector2(76.9f, 25);
            textRect.anchorMin = Vector2.zero;
            textRect.anchorMax = Vector2.one;
            textRect.GetComponent <Text>().alignment = TextAnchor.MiddleCenter;
            #endregion

            #region 预制色模块
            // 预制色按钮
            var presets = CreateUIObject("Presets", colorPicker.transform, new Vector2(220, 40));
            presets.transform.localPosition = new Vector3(0, -190.5f);
            var presetsText = CreateUIObject("Text", presets.transform, new Vector2(154.4f, 20));
            presetsText.transform.localPosition         = new Vector3(-27.3f, 10);
            presetsText.AddComponent <Text>().text      = "Presets";
            presetsText.GetComponent <Text>().alignment = TextAnchor.MiddleLeft;
            presetsText.GetComponent <Text>().color     = new Color(0.2f, 0.2f, 0.2f, 1);
            // 预制色Colors
            var colors = CreateUIObject("Colors", presets.transform, new Vector2(214.5f, 12));
            colors.transform.localPosition = new Vector3(2.75f, -10);
            colors.AddComponent <GridLayoutGroup>().cellSize = new Vector2(12, 12);
            colors.GetComponent <GridLayoutGroup>().spacing  = new Vector2(0, 1);
            // 预制色模板
            var colorTamplate = CreateUIObject("ColorItemTamplate", colors.transform, new Vector2(12, 12));
            colorTamplate.AddComponent <Image>();
            colorTamplate.AddComponent <Button>();
            colorTamplate.AddComponent <Outline>();
            colorTamplate.SetActive(false);
            // 添加按钮
            var addButton = DefaultControls.CreateButton(convertToDefaultResources(resources));
            addButton.name = "AddButton";
            addButton.transform.SetParent(colors.transform);
            //GameObject.Destroy(addButton.transform.FindChild("Text").gameObject);
            #endregion
            return(colorPicker);
        }
        /// <summary>
        /// Create Calendar
        /// </summary>
        public static GameObject CreateCalendar(Resources resources)
        {
            DefaultControls.Resources res = convertToDefaultResources(resources);
            #region Create Calendar Container
            //create calendar
            GameObject calendar = DefaultControls.CreateImage(res);
            calendar.name = "Calendar";
            calendar.AddComponent <Calendar>();
            RectTransform calendarRect = calendar.GetComponent <RectTransform>();
            calendarRect.sizeDelta = _defaultCalendarSize;
            #endregion
            #region Create Title

            //create title
            GameObject    title     = CreateUIObject("Title", calendar.transform);
            RectTransform titleRect = title.GetComponent <RectTransform>();
            titleRect.pivot     = new Vector2(0.5f, 1);
            titleRect.anchorMin = new Vector2(0, 1);
            titleRect.anchorMax = Vector2.one;
            titleRect.sizeDelta = new Vector2(0, 30);

            //create last button
            GameObject lastButton = DefaultControls.CreateImage(res);
            lastButton.AddComponent <Button>();
            lastButton.GetComponent <Image>().sprite = res.dropdown;
            lastButton.transform.localEulerAngles    = new Vector3(0, 0, -90);
            lastButton.name = "LastButton";
            SetParentAndAlign(lastButton, title.transform);
            RectTransform lastButtonRect = lastButton.GetComponent <RectTransform>();
            lastButtonRect.anchorMin = new Vector2(0, 1);
            lastButtonRect.anchorMax = new Vector2(0, 1);
            lastButtonRect.sizeDelta = new Vector2(20, 20);
            lastButtonRect.transform.localPosition += new Vector3(15, -15);

            //create next button
            GameObject nextButton = DefaultControls.CreateImage(res);
            nextButton.AddComponent <Button>();
            nextButton.GetComponent <Image>().sprite = res.dropdown;
            nextButton.transform.localEulerAngles    = new Vector3(0, 0, 90);
            nextButton.name = "NextButton";
            SetParentAndAlign(nextButton, title.transform);
            RectTransform nextButtonRect = nextButton.GetComponent <RectTransform>();
            nextButtonRect.anchorMin = new Vector2(1, 1);
            nextButtonRect.anchorMax = new Vector2(1, 1);
            nextButtonRect.sizeDelta = new Vector2(20, 20);
            nextButtonRect.transform.localPosition += new Vector3(-15, -15);

            //create time button
            GameObject timeButton = CreateUIObject("TimeButton", title.transform);
            timeButton.AddComponent <Button>();
            RectTransform timeButtonRect = timeButton.GetComponent <RectTransform>();
            timeButtonRect.anchorMin = new Vector2(0.5f, 0);
            timeButtonRect.anchorMax = new Vector2(0.5f, 1);
            timeButtonRect.sizeDelta = new Vector2(160, 0);

            //create time button text
            GameObject timeText = DefaultControls.CreateText(res);
            SetParentAndAlign(timeText, timeButton.transform);
            Text indexText = timeText.GetComponent <Text>();
            indexText.alignment = TextAnchor.MiddleCenter;
            indexText.text      = DateTime.Now.ToShortDateString();
            RectTransform textRect = timeText.GetComponent <RectTransform>();
            textRect.anchorMin = Vector2.zero;
            textRect.anchorMax = Vector2.one;
            textRect.sizeDelta = Vector2.zero;
            timeButton.GetComponent <Button>().targetGraphic = indexText;

            #endregion
            #region Create Container

            //create container
            GameObject container = DefaultControls.CreateImage(res);
            container.name = "Container";
            SetParentAndAlign(container, calendar.transform);
            RectTransform rectContainer = container.GetComponent <RectTransform>();
            rectContainer.anchorMin      = new Vector2(0, 0.5f);
            rectContainer.anchorMax      = new Vector2(1, 0.5f);
            rectContainer.sizeDelta      = new Vector2(-20, 126);
            rectContainer.localPosition -= new Vector3(0, 17);

            //create weeks
            GameObject weeks = DefaultControls.CreateImage(res);
            weeks.name = "Weeks";
            SetParentAndAlign(weeks, container.transform);
            RectTransform weeksRect = weeks.GetComponent <RectTransform>();
            weeksRect.anchorMin = new Vector2(0, 1);
            weeksRect.anchorMax = Vector2.one;
            weeksRect.pivot     = new Vector2(0.5f, 1);
            weeksRect.sizeDelta = new Vector2(0, 18);
            GridLayoutGroup glg = weeks.AddComponent <GridLayoutGroup>();
            glg.cellSize = new Vector2(26, 18);
            glg.spacing  = new Vector2(3, 0);
            weeks.GetComponent <Image>().color = Color.gray;
            //create week Text
            GameObject weekText = DefaultControls.CreateText(res);
            weekText.name = "WeekTemplate";
            Text text = weekText.GetComponent <Text>();
            text.alignment = TextAnchor.MiddleCenter;
            text.text      = "Sunday";
            SetParentAndAlign(weekText, weeks.transform);

            //create days
            GameObject days = DefaultControls.CreateImage(res);
            days.name = "Days";
            SetParentAndAlign(days, container.transform);
            RectTransform daysRect = days.GetComponent <RectTransform>();
            daysRect.anchorMin      = Vector2.zero;
            daysRect.anchorMax      = Vector2.one;
            daysRect.sizeDelta      = new Vector2(0, -18);
            daysRect.localPosition -= new Vector3(0, 9, 0);
            GridLayoutGroup glg2 = days.AddComponent <GridLayoutGroup>();
            glg2.cellSize = new Vector2(27.7f, 17f);
            glg2.spacing  = new Vector2(1, 1);
            //create day text
            GameObject dayText = DefaultControls.CreateButton(res);
            dayText.name = "DayTemplate";
            dayText.transform.Find("Text").GetComponent <Text>().text = "31";
            dayText.GetComponent <Image>().sprite = null;
            dayText.GetComponent <Image>().color  = Color.cyan;
            SetParentAndAlign(dayText, days.transform);

            //create months
            GameObject months = DefaultControls.CreateImage(res);
            months.name = "Months";
            SetParentAndAlign(months, container.transform);
            RectTransform monthRect = months.GetComponent <RectTransform>();
            monthRect.anchorMin = Vector2.zero;
            monthRect.anchorMax = Vector2.one;
            monthRect.sizeDelta = new Vector2(0, 0);
            GridLayoutGroup glg3 = months.AddComponent <GridLayoutGroup>();
            glg3.cellSize = new Vector2(47, 36);
            glg3.spacing  = new Vector2(4, 9);
            //create monthText
            GameObject monthText = DefaultControls.CreateButton(res);
            monthText.name = "MonthTemplate";
            monthText.transform.Find("Text").GetComponent <Text>().text = "January";
            monthText.GetComponent <Image>().sprite = null;
            monthText.GetComponent <Image>().color  = Color.cyan;
            SetParentAndAlign(monthText, months.transform);
            months.SetActive(false);

            #endregion
            return(calendar);
        }
Exemple #29
0
        static public void AddButton(MenuCommand menuCommand)
        {
            GameObject go = DefaultControls.CreateButton(GetStandardResources());

            PlaceUIElementRoot(go, menuCommand);
        }
        static public void AddButtonWithText()
        {
            var go = DefaultControls.CreateButton(Res);

            ToScene(go);
        }