Вы должны считать их вручную в цикле.Вы можете получить количество столбцов и строк из компонента GridLayoutGroup
, выполнив следующие действия:
1 . Получите позицию первого потомка объекта под объектом GridLayoutGroup
.Позиция должна быть от RectTransform.anchoredPosition
, которая возвращает Vector2
.
2 . Цикл от второго дочернего к остальным дочерним объектам GridLayoutGroup
.
3 . В каждом цикле от # 2 , сравните компонент x
из первого дочернего элемента с компонентом x
из текущего цикла.
Создайте логическую переменную вне цикла, которая определяет, когда прекратить подсчетстрока.Значение ошибки должно составлять false
.
Если значения x
совпадают, это столбец , поэтому увеличьте значение столбца на 1
и установите логическую переменную на true
.
Если значения x
не одинаковы, а логическая переменная равна false
, это строка , поэтому увеличьте строку на 1
.
По сути, вы останавливаете подсчет или увеличение строки, когда столбец найден в цикле.Для этого используется логическая переменная.
void GetColumnAndRow(GridLayoutGroup glg, out int column, out int row)
{
column = 0;
row = 0;
if (glg.transform.childCount == 0)
return;
//Column and row are now 1
column = 1;
row = 1;
//Get the first child GameObject of the GridLayoutGroup
RectTransform firstChildObj = glg.transform.
GetChild(0).GetComponent<RectTransform>();
Vector2 firstChildPos = firstChildObj.anchoredPosition;
bool stopCountingRow = false;
//Loop through the rest of the child object
for (int i = 1; i < glg.transform.childCount; i++)
{
//Get the next child
RectTransform currentChildObj = glg.transform.
GetChild(i).GetComponent<RectTransform>();
Vector2 currentChildPos = currentChildObj.anchoredPosition;
//if first child.x == otherchild.x, it is a column, ele it's a row
if (firstChildPos.x == currentChildPos.x)
{
column++;
//Stop couting row once we find column
stopCountingRow = true;
}
else
{
if (!stopCountingRow)
row++;
}
}
}
Использование:
public GridLayoutGroup gridLG;
void Update()
{
int column = 0;
int row = 0;
GetColumnAndRow(gridLG, out column, out row);
Debug.Log("Column: " + column + " Row: " + row);
}