Why loops crash the entire OS/PC?
So, everytime i do i loop and it's end being infinite, the screen freezes and even if i wait for 5-10 minutes nothing works so i have to shutdown the pc. For some months i though this was normal but i saw that the normal case if unity crashing, not everything, and believe me when i say this is pretty annoying.
The problem is not "why my loop is infinite". It's why it freezes everything. Even though here i let you the code (I'm doing a pathfinding with A*).
Btw, it seems to crash at the 2º loop. The log only shows 2 times and then it freezes.
 private IEnumerator FindPath(Vector2 start, Vector2 end)
     {
         List<Point2> openPoints = new List<Point2>();
         List<Point2> closedPoints = new List<Point2>();
         List<Point2> path = new List<Point2>();
 
         Point2 startPoint = new Point2(start);
         Point2 endPoint = new Point2(end);
 
         openPoints.Add(startPoint);
         path.Add(startPoint);
 
         int n = 0;
 
         while(n < 5)
         {
             n++;
 
             Point2 point = openPoints[0];
             point.SetCost(startPoint, endPoint);
             Debug.Log("Point is" + point.worldPos);
 
             for(int i = 1; i<openPoints.Count; i++)
             {
                 if(openPoints[i].fCost < point.fCost || openPoints[i].fCost == point.fCost)
                 {
                     if(openPoints[i].hCost < point.hCost)
                     {
                         point = openPoints[i];  
                         path.Add(point);
                     }
                 }
             }
 
             Instantiate(pointPrefab,transform.position,Quaternion.identity);
             yield return new WaitForSeconds(0.5f);
 
             if(openPoints.Contains(point)){
                 openPoints.Remove(point);
             }
             openPoints.Remove(point);
             closedPoints.Add(point);
 
             if(point == endPoint)
             {
                 break;
             }
 
             
             foreach (Point2 nearPoint in point.GetNearPoints()){
                 for(int i = 0; i<closedPoints.Count; i++){
                     if(nearPoint.worldPos == closedPoints[i].worldPos){
                         closedPoints.Add(nearPoint);
                     }
                 }
                 
                 if(!closedPoints.Contains(nearPoint)){
                     nearPoint.IsWalkeable();
 
                     if(nearPoint.walkeable){
                         if(!openPoints.Contains(nearPoint)){
                             nearPoint.SetCost(startPoint, endPoint);
                             openPoints.Add(nearPoint);
                         }
                     }
                 }
                 
             }
  
         }
         
 
     }
Your answer
 
 
             Follow this Question
Related Questions
While loop crashing in update but why not if statement? 2 Answers
"If statement" and whiled loop acting strange and crashes 1 Answer
Unity Editor constantly crashing 0 Answers
Make an object move from Point A to Point B then back to Point A repeating 9 Answers
Display maximum movement range with a non-grid-based system 0 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                