public void SetUpGrid() { DeleteAllChildren(); float yMin = 0.0f; float yOffset = 1.0f / m_rows; float xOffset = 1.0f / m_columns; for (int i = 0; i < m_rows; i++) { float xMin = 0.0f; for (int j = 0; j < m_columns; j++) { RectTransform rect = Object.Instantiate(m_gridElement, this.transform).GetComponent <RectTransform>(); rect.anchorMin = new Vector2(xMin, yMin); rect.anchorMax = new Vector2(xMin + xOffset, yOffset + yMin); xMin += xOffset; if (!string.IsNullOrEmpty(m_buttonMsgFormat)) { string message = string.Format(m_buttonMsgFormat, j, i); UIButtonInteraction interaction = rect.GetComponent <UIButtonInteraction>(); interaction.message = message; interaction.name = message; } } yMin += yOffset; } }
public void BuildGridElements(List <GridElementData> gridElements, int pageNumber) { m_gridTransform.DestroyAllChildren(); if (gridElements == null || gridElements.Count == 0) { return; } GameObject gridPrefab = Resources.Load <GameObject>("UIGridElement"); float yMaxAnchor = 1.0f; for (int rowIndex = 0, gridIndex = pageNumber * k_elementsPerGrid; rowIndex < k_elementsInColumn; rowIndex++) { float xMinAnchor = 0.0f; for (int columnIndex = 0; columnIndex < k_elementsInRow; columnIndex++) { RectTransform element = Object.Instantiate(gridPrefab, m_gridTransform).GetComponent <RectTransform>(); element.name = $"Element_{gridIndex}"; Image image = element.GetComponent <Image>(); image.color = gridElements[gridIndex].IsExpense ? k_expenseColor : k_incomeColor; UIButtonInteraction buttonInteraction = element.GetComponent <UIButtonInteraction>(); buttonInteraction.m_message = k_selectElementMsg + gridIndex; TextMeshProUGUI text = element.gameObject.GetComponentFromChild <TextMeshProUGUI>("Text"); text.text = $"{gridElements[gridIndex].m_variableName}:\n{gridElements[gridIndex].m_variableValue.ToString("C", CultureInfo.CurrentCulture)}"; element.anchorMin = new Vector2(xMinAnchor, yMaxAnchor - k_columnElementSize); element.anchorMax = new Vector2(xMinAnchor + k_rowElementSize, yMaxAnchor); xMinAnchor += k_rowElementSize + k_rowSpacing; gridIndex++; if (gridIndex >= gridElements.Count) { return; } } yMaxAnchor -= k_columnElementSize + k_columnSpacing; } }