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