/// <summary> /// Initialize the MaterialEditor UI /// </summary> protected void InitUI() { UIUtility.Init(nameof(KK_Plugins)); MaterialEditorWindow = UIUtility.CreateNewUISystem("MaterialEditorCanvas"); MaterialEditorWindow.GetComponent <CanvasScaler>().referenceResolution = new Vector2(1920f / UIScale.Value, 1080f / UIScale.Value); Visible = false; MaterialEditorWindow.gameObject.transform.SetParent(transform); MaterialEditorWindow.sortingOrder = 1000; MaterialEditorMainPanel = UIUtility.CreatePanel("Panel", MaterialEditorWindow.transform); MaterialEditorMainPanel.color = Color.white; MaterialEditorMainPanel.transform.SetRect(0.05f, 0.05f, UIWidth.Value * UIScale.Value, UIHeight.Value * UIScale.Value); UIUtility.AddOutlineToObject(MaterialEditorMainPanel.transform, Color.black); var drag = UIUtility.CreatePanel("Draggable", MaterialEditorMainPanel.transform); drag.transform.SetRect(0f, 1f, 1f, 1f, 0f, -headerSize); drag.color = Color.gray; UIUtility.MakeObjectDraggable(drag.rectTransform, MaterialEditorMainPanel.rectTransform); var nametext = UIUtility.CreateText("Nametext", drag.transform, "Material Editor"); nametext.transform.SetRect(0f, 0f, 1f, 1f, 0f, 0f, 0f); nametext.alignment = TextAnchor.MiddleCenter; FilterInputField = UIUtility.CreateInputField("Filter", drag.transform, "Filter"); FilterInputField.transform.SetRect(0f, 0f, 0f, 1f, 0f, 0f, 100f); FilterInputField.onValueChanged.AddListener(RefreshUI); var close = UIUtility.CreateButton("CloseButton", drag.transform, ""); close.transform.SetRect(1f, 0f, 1f, 1f, -20f); close.onClick.AddListener(() => Visible = false); //X button var x1 = UIUtility.CreatePanel("x1", close.transform); x1.transform.SetRect(0f, 0f, 1f, 1f, 8f, 0f, -8f); x1.rectTransform.eulerAngles = new Vector3(0f, 0f, 45f); x1.color = Color.black; var x2 = UIUtility.CreatePanel("x2", close.transform); x2.transform.SetRect(0f, 0f, 1f, 1f, 8f, 0f, -8f); x2.rectTransform.eulerAngles = new Vector3(0f, 0f, -45f); x2.color = Color.black; MaterialEditorScrollableUI = UIUtility.CreateScrollView("MaterialEditorWindow", MaterialEditorMainPanel.transform); MaterialEditorScrollableUI.transform.SetRect(0f, 0f, 1f, 1f, marginSize, marginSize, -marginSize, -headerSize - marginSize / 2f); MaterialEditorScrollableUI.gameObject.AddComponent <Mask>(); MaterialEditorScrollableUI.content.gameObject.AddComponent <VerticalLayoutGroup>(); MaterialEditorScrollableUI.content.gameObject.AddComponent <ContentSizeFitter>().verticalFit = ContentSizeFitter.FitMode.PreferredSize; MaterialEditorScrollableUI.verticalScrollbar.GetComponent <RectTransform>().offsetMin = new Vector2(scrollOffsetX, 0f); MaterialEditorScrollableUI.viewport.offsetMax = new Vector2(scrollOffsetX, 0f); MaterialEditorScrollableUI.movementType = ScrollRect.MovementType.Clamped; var template = ItemTemplate.CreateTemplate(MaterialEditorScrollableUI.content.transform); virtualList = MaterialEditorScrollableUI.gameObject.AddComponent <VirtualList>(); virtualList.ScrollRect = MaterialEditorScrollableUI; virtualList.EntryTemplate = template; virtualList.Initialize(); }