public void Reset(int size){ foreach(GameObject c in cubes_) Destroy(c); state_ = new PuzzleState(size); cubes_ = new List<GameObject>(); short[,] nums2D = state_.NumbersMappedTo2D(); int idx = 1; for(int i = 0; i < PuzzleState.width_; i++){ for(int j = 0; j < PuzzleState.width_; j++){ if(idx++ == PuzzleState.puzzleSize_ + 1) break; Material m = (Material)Resources.Load(nums2D[i,j].ToString(), typeof(Material)); GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube); cube.renderer.material = m; cube.transform.position = new Vector3(j,-i,-1.38f); cube.transform.Rotate(new Vector3(0,0,180)); cube.AddComponent("CubeClick"); cubes_.Add(cube); } } nullPosition = new Vector3(PuzzleState.width_ - 1 , -(PuzzleState.width_ - 1), -1.38f); }