// Se llama antes de dibujar el primero frame y es donde pasamos información entre los distintos objetos que se han despertado void Awake() { //Podría lanzar excepciones si no ha sido inicializado con gameobjects en todos sus campos clave (salvo que toque cargar la info de fichero o algo así...) random = new System.Random(); // Mientras que no requiera de las dimensiones del puzle ni nada especial, se puede crear en el Start solver = new SlidingPuzzleSolver(); Initialize(rows, columns); }
// Se crea el resolutor con la estrategia DFS y se resuelve el problema public void SolvePuzzleByDFS() { // Si está ordenado, podría optar por no hacer nada... aunque llamaré igualmente y espero que devuelva la solución vacía solver = new SlidingPuzzleSolver(rows, columns); // El resolutor ya está construido porque no requiere nada time = Time.realtimeSinceStartup; memory = SystemInfo.systemMemorySize; // Se podría sumar a la parte gráfica para tener la ocupación real en memoria (SystemInfo.graphicsMemorySize) List <Operator> operators = solver.Solve(puzzle, SlidingPuzzleSolver.Strategy.DFS); time = Time.realtimeSinceStartup - time; memory = SystemInfo.systemMemorySize - memory; // No tiene mucho sentido hacerlo aquí, porque ya se habrá liberado la mmemoria, habría que escoger el punto álgido (máximo de memoria utilizada) metrics = solver.GetMetrics().ToString(); ShowSolution(operators); }