/// <summary> /// コントロールにアンカーをセットする /// </summary> private void SetAnchorControl() { anchorControlList.Add(new AnchorLayout(updateButton, AnchorStyles.Top | AnchorStyles.Left, PodcasCoInfo.FormBaseWidth, PodcasCoInfo.FormBaseHight)); anchorControlList.Add(new AnchorLayout(clipButton, AnchorStyles.Top | AnchorStyles.Left, PodcasCoInfo.FormBaseWidth, PodcasCoInfo.FormBaseHight)); anchorControlList.Add(new AnchorLayout(playButton, AnchorStyles.Top | AnchorStyles.Right, PodcasCoInfo.FormBaseWidth, PodcasCoInfo.FormBaseHight)); anchorControlList.Add(new AnchorLayout(stationFilterComboBox, AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right, PodcasCoInfo.FormBaseWidth, PodcasCoInfo.FormBaseHight)); AnchorLayout clipFilterPanelLayout = new AnchorLayout(clipFilterPanel, AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right, PodcasCoInfo.FormBaseWidth, PodcasCoInfo.FormBaseHight); anchorControlList.Add(clipFilterPanelLayout); clipFilterPanelLayout.LayoutControl(); anchorControlList.Add(new AnchorLayout(allClipRadioButton, AnchorStyles.Top | AnchorStyles.Left)); anchorControlList.Add(new AnchorLayout(clipedRadioButton, AnchorStyles.Top | AnchorStyles.Left)); anchorControlList.Add(new AnchorLayout(unclipedRadioButton, AnchorStyles.Top | AnchorStyles.Left)); anchorControlList.Add(new AnchorLayout(channelListView, AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Bottom, PodcasCoInfo.FormBaseWidth, PodcasCoInfo.FormBaseHight)); }
public override void OnInspectorGUI() { AnchorLayout layout = (AnchorLayout)target; List <RectTransform> elements = layout.GetComponentsInDirectChildren(); //foreach(RectTransform rt in layout.transform.GetComponentsInChildren<RectTransform>()) // elements.Add(rt); //elements.RemoveAt(0); layout.nOfColums = EditorGUILayout.IntField("Colums", layout.nOfColums); if (layout.nOfColums <= 0) { layout.nOfColums = 1; } layout.nOfRows = Mathf.CeilToInt((float)elements.Count / (float)layout.nOfColums); if (layout.nOfRows <= 0) { layout.nOfRows = 1; } layout.elementH = EditorGUILayout.Slider("Element Height", layout.elementH, 0, 1); layout.elementL = EditorGUILayout.Slider("Element Lenght", layout.elementL, 0, 1); EditorGUILayout.Space(); layout.leftBorder = EditorGUILayout.Slider("Left Border", layout.leftBorder, 0, 1); layout.rightBorder = EditorGUILayout.Slider("Right Border", layout.rightBorder, 0, 1); EditorGUILayout.Space(); layout.topBorder = EditorGUILayout.Slider("Top Border", layout.topBorder, 0, 1); layout.bottomBorder = EditorGUILayout.Slider("Bottom Border", layout.bottomBorder, 0, 1); layout.centerFinalLine = EditorGUILayout.Toggle("Center Final Line", layout.centerFinalLine); int nOfElementsOnLast = elements.Count % layout.nOfColums; //Posicionamento int column = 0; int row = 0; float xGap; float yGap; if (layout.nOfColums > 1) { xGap = (1 - (layout.nOfColums * layout.elementL) - (layout.rightBorder + layout.leftBorder)) / (layout.nOfColums - 1); } else { xGap = 0; } if (xGap < 0) { xGap = 0; } if (layout.nOfRows > 1) { yGap = (1 - (layout.nOfRows * layout.elementH) - (layout.topBorder + layout.bottomBorder)) / (layout.nOfRows - 1); } else { yGap = 0; } if (yGap < 0) { yGap = 0; } for (int i = 0; i < elements.Count; i++) { column = i % layout.nOfColums; row = Mathf.FloorToInt(i / layout.nOfColums); RectTransform e = elements[i]; float xMin; if (layout.centerFinalLine && row == layout.nOfRows - 1 && nOfElementsOnLast > 0) { float normalLine = (layout.nOfColums * layout.elementL) + ((layout.nOfColums - 1) * xGap); float lastLine = nOfElementsOnLast * layout.elementL + ((nOfElementsOnLast - 1) * xGap); xMin = layout.leftBorder + ((normalLine - lastLine) / 2) + (column * (layout.elementL + xGap)); } else { xMin = layout.leftBorder + (column * (layout.elementL + xGap)); } float xMax = xMin + layout.elementL; float yMin = layout.bottomBorder + (row * (layout.elementH + yGap)); float yMax = yMin + layout.elementH; e.anchorMin = new Vector2(xMin, yMin); e.anchorMax = new Vector2(xMax, yMax); } EditorGUILayout.Space(); EditorGUILayout.LabelField("Debug"); EditorGUILayout.FloatField("xGap", xGap); EditorGUILayout.FloatField("yGap", yGap); EditorGUILayout.IntField("Number of Colums", layout.nOfColums); EditorGUILayout.IntField("Number of Rows", layout.nOfRows); }
public AnchorLayoutTest(ControlBase parent) : base(parent) { m_Font = new Font(Skin.Renderer, "Arial", 10); AnchorLayout layout = new AnchorLayout(this); layout.Size = new Size(445, 165); layout.Padding = Padding.Five; layout.AnchorBounds = new Rectangle(0, 0, 445, 165); Button button = new Button(layout); button.Font = m_Font; button.Text = "Left Top"; button.AnchorBounds = new Rectangle(10, 10, 100, 20); button.Anchor = Anchor.LeftTop; button = new Button(layout); button.Font = m_Font; button.Text = "Center Top"; button.AnchorBounds = new Rectangle(150, 10, 100, 20); button.Anchor = new Anchor(50, 0, 50, 0); button = new Button(layout); button.Font = m_Font; button.Text = "Right Top"; button.AnchorBounds = new Rectangle(290, 10, 100, 20); button.Anchor = Anchor.RightTop; button = new Button(layout); button.Font = m_Font; button.Text = "Left Center"; button.AnchorBounds = new Rectangle(10, 50, 100, 20); button.Anchor = new Anchor(0, 50, 0, 50); button = new Button(layout); button.Font = m_Font; button.Text = "Center"; button.AnchorBounds = new Rectangle(150, 50, 100, 20); button.Anchor = new Anchor(50, 50, 50, 50); button = new Button(layout); button.Font = m_Font; button.Text = "Right Center"; button.AnchorBounds = new Rectangle(290, 50, 100, 20); button.Anchor = new Anchor(100, 50, 100, 50); button = new Button(layout); button.Font = m_Font; button.Text = "Left Bottom"; button.AnchorBounds = new Rectangle(10, 90, 100, 20); button.Anchor = Anchor.LeftBottom; button = new Button(layout); button.Font = m_Font; button.Text = "Center Bottom"; button.AnchorBounds = new Rectangle(150, 90, 100, 20); button.Anchor = new Anchor(50, 100, 50, 100); button = new Button(layout); button.Font = m_Font; button.Text = "Right Bottom"; button.AnchorBounds = new Rectangle(290, 90, 100, 20); button.Anchor = Anchor.RightBottom; HorizontalSlider horz = new HorizontalSlider(layout); horz.AnchorBounds = new Rectangle(10, 125, 380, 25); horz.Anchor = new Anchor(0, 100, 100, 100); VerticalSlider vert = new VerticalSlider(layout); vert.AnchorBounds = new Rectangle(405, 10, 25, 100); vert.Anchor = new Anchor(100, 0, 100, 100); HorizontalSlider width = new HorizontalSlider(this); width.Min = 445; width.Max = 800; width.Height = 25; width.Dock = Dock.Bottom; width.Padding = Padding.Five; width.ValueChanged += (control, args) => { layout.Width = (int)(control as HorizontalSlider).Value; }; VerticalSlider height = new VerticalSlider(this); height.Min = 165; height.Max = 400; height.Width = 25; height.Dock = Dock.Right; height.Padding = Padding.Five; height.ValueChanged += (control, args) => { layout.Height = (int)(control as VerticalSlider).Value; }; }