void createBorders() { int numBorders = System.Enum.GetNames(typeof(zDraggableBorder.Borders)).Length - 2; if (frame == null) { RectTransform frameRect; frame = new GameObject("Frame"); frameRect = frame.AddComponent <RectTransform>(); frameRect.SetParent(transform); frameRect.offsetMax = new Vector2(0, 0); frameRect.offsetMin = new Vector2(0, 0); frameRect.anchorMin = new Vector2(0, 0); frameRect.anchorMax = new Vector2(1, 1); frameRect = frame.GetComponent <RectTransform>(); borderRects = new RectTransform[numBorders]; borders = new zDraggableBorder[numBorders]; GameObject thisSegment; Transform header = null; RectTransform segRect; var le = frame.AddComponent <LayoutElement>(); le.ignoreLayout = true; for (int i = 0; i < numBorders; i++) { thisSegment = new GameObject(((zDraggableBorder.Borders)i).ToString()); segRect = thisSegment.AddComponent <RectTransform>(); segRect.SetParent(frameRect); segRect.offsetMax = new Vector2(0, 0); segRect.offsetMin = new Vector2(0, 0); segRect.anchorMin = new Vector2(0, 0); segRect.anchorMax = new Vector2(1, 1); zDraggableBorder border = thisSegment.AddComponent <zDraggableBorder>(); border.SetDirection((zDraggableBorder.Borders)i); border.SetBorderWidth(borderWidth, headerHeight); border.SetTargetRect(rect); borders[i] = border; borderRects[i] = segRect; if (i == (int)zDraggableBorder.Borders.Drag) { header = thisSegment.transform; HorizontalLayoutGroup headerLayout = thisSegment.AddComponent <HorizontalLayoutGroup>(); headerLayout.childControlWidth = true; headerLayout.childForceExpandWidth = true; } } if (draggableMenu == null) { draggableMenu = Resources.Load("zDraggableMenu") as GameObject; } if (draggableMenu != null) { GameObject thisMenu = Instantiate(draggableMenu, frame.transform); thisMenu.transform.SetParent(frame.transform); thisMenu.GetComponent <RectTransform>().anchoredPosition = Vector3.zero; menuController = thisMenu.GetComponent <zDraggableMenuController>(); } else { Debug.Log("no menu"); } } for (int i = 0; i < numBorders; i++) { borders[i].SetDirection((zDraggableBorder.Borders)i); if (i == (int)zDraggableBorder.Borders.L || i == (int)zDraggableBorder.Borders.R) { if (useLineGraphics) { borders[i].SetImage(zResourceLoader.lineV); } else { borders[i].SetImage(null); } } if (i == (int)zDraggableBorder.Borders.T || i == (int)zDraggableBorder.Borders.B) { if (useLineGraphics) { borders[i].SetImage(zResourceLoader.lineH); } else { borders[i].SetImage(null); } } borders[i].SetBorderWidth(borderWidth, headerHeight); } }
void OnValidate() { if (image == null) { image = GetComponent <Image>(); } if (rect == null) { rect = GetComponent <RectTransform>(); } if (!enabled) { return; } if (!gameObject.activeInHierarchy) { return; } SetHorizontalPivot(anchorHorizontal); SetVerticalPivot(anchorVertical); if (refresh) { refresh = false; } if (!gameObject.activeInHierarchy || !enabled) { return; } isDragging = false; // if (headerHeight < borderWidth) headerHeight = borderWidth; SetAnchorAndPivotBasedOnAnchoring(); createBorders(); if (layoutElement == null) { layoutElement = GetComponent <LayoutElement>(); } if (layoutElement == null) { layoutElement = gameObject.AddComponent <LayoutElement>(); } layoutElement.preferredHeight = rect.rect.width; layoutElement.preferredWidth = rect.rect.height; if (menuController == null) { menuController = GetComponentInChildren <zDraggableMenuController>(); } if (menuController != null) { menuController.SetHeight(headerHeight); } if (colorsChanged != null) { colorsChanged(); } }