void CreatePuzzle() { blocks = new BlockEvent[blocksPerLine, blocksPerLine]; Texture2D[,] imageSlices = ImageSlicer.GetSlices(image, blocksPerLine); for (int i = 0; i < blocksPerLine; i++) { for (int j = 0; j < blocksPerLine; j++) { GameObject blockObject = GameObject.CreatePrimitive(PrimitiveType.Quad); blockObject.transform.position = -Vector2.one * (blocksPerLine - 1) * 0.5f + new Vector2(j, i) + new Vector2(transform.position.x, transform.position.y); blockObject.transform.position = new Vector3(blockObject.transform.position.x, blockObject.transform.position.y, transform.position.z - 0.1f); blockObject.transform.parent = transform; BlockEvent block = blockObject.AddComponent <BlockEvent>(); block.OnBlockPressed += PlayerMouseBlockInput; block.OnFinishedMoving += OnBlockFinishedMoving; block.Init(new Vector2Int(j, i), imageSlices[j, i]); blocks[j, i] = block; if (i == 0 && j == blocksPerLine - 1) { emptyBlock = block; } } } cam.orthographicSize = blocksPerLine * 0.55f; inputs = new Queue <BlockEvent>(); }