Пример #1
0
        protected virtual void InstantiateBoard()
        {
            fields = new MonoField[Rows * Columns];
            GetComponent <AspectRatioFitter>().aspectRatio = Columns / (float)Rows;

            Vector2 boardSize = new Vector2(((RectTransform)transform).rect.width * transform.lossyScale.x, ((RectTransform)transform).rect.height * transform.lossyScale.y);

            for (int y = 0; y < Rows; y++)
            {
                for (int x = 0; x < Columns; x++)
                {
                    // Create the field and give it a descriptive name.
                    MonoField newField = MonoField.Instantiate(configuration.fieldPrefab, fieldTransform);
                    newField.name = "Field(" + x + ", " + y + ")";

                    // Anchoring
                    Vector2 minAnchor         = new Vector2(x / (float)Columns, y / (float)Rows);
                    Vector2 maxAnchor         = new Vector2((x + 1) / (float)Columns, (y + 1) / (float)Rows);
                    var     newFieldTransform = (RectTransform)newField.transform;
                    newFieldTransform.anchorMin = minAnchor;
                    newFieldTransform.anchorMax = maxAnchor;

                    // Setup
                    fields[level.FieldIndex(x, y)] = newField;
                    fields[level.FieldIndex(x, y)].Setup(level.FieldIndex(x, y));

                    // Instantiate board pieces
                    var piece     = level.Fields[level.FieldIndex(x, y)];
                    var monoPiece = AddPiece(piece, fields[level.FieldIndex(x, y)]);
                }
            }
        }