private void Awake() { IsFull = new BoolReactiveProperty(); Rows = new List <IEnumerable <GridSlot> >(); Cols = new List <IEnumerable <GridSlot> >(); Diagonals = new List <IEnumerable <GridSlot> >(); //rows Rows = Rows.Append(Slots.Take(3)); Rows = Rows.Append(Slots.Skip(3).Take(3)); Rows = Rows.Append(Slots.Skip(6).Take(3)); //cols Cols = Cols.Append(Slots.ByIndexes(0, 3, 6)); Cols = Cols.Append(Slots.ByIndexes(1, 4, 7)); Cols = Cols.Append(Slots.ByIndexes(2, 5, 8)); //diagonals Diagonals = Diagonals.Append(Slots.ByIndexes(0, 4, 8)); Diagonals = Diagonals.Append(Slots.ByIndexes(2, 4, 6)); //display rows, cols, diagonals for debug purpose Debug.LogFormat("Rows: [{0}]", Rows.Aggregate("", (current, row) => current + "(" + string.Join(",", row.Select(s => s.name)) + ")")); Debug.LogFormat("Cols: [{0}]", Cols.Aggregate("", (current, col) => current + "(" + string.Join(",", col.Select(s => s.name)) + ")")); Debug.LogFormat("Diagonals: [{0}]", Diagonals.Aggregate("", (current, diagonal) => current + "(" + string.Join(",", diagonal.Select(s => s.name)) + ")")); }