Having Unity lock up when running a path script

I am currently working on a game that requires me to have a gameObject follow a set path from one waypoint to another. However While I run the program the moment my script causes Unity to lock up. Here is my current script.

var roll : int = 5;
var CurrentWaypoint : GameObject;
var nextWaypoint : GameObject;
var change : int = 1;
var  theWayPoints = new Array ("WayPoint1.1","WayPoint1.2","WayPoint1.3","WayPoint1.4","WayPoint1.5","WayPoint1.6","WayPoint1.7","WayPoint1.8","WayPoint1.9","WayPoint1.10","WayPoint1.11","WayPointF");
var i = 0;

function Update(){

    transform.Translate(Vector3(0,0,roll)* Time.deltaTime);

    PathOne();

    transform.LookAt(CurrentWaypoint.transform);

}

function PathOne(){

    while(i<theWayPoints.length)
    {
        if (Vector3.Distance (transform.position , CurrentWaypoint.transform.position) < change)
        {
            CurrentWaypoint = nextWaypoint;

            if (CurrentWaypoint == GameObject(theWayPoints*))*
 *{*
 *i++;*
 _nextWaypoint = GameObject(theWayPoints*);*_
 _*}*_
 _*else*_
 _*{*_
 _*Destroy(gameObject);*_
 _*}*_
 _*}*_ 
 _*}*_
_*}*_
_*```*_
_*<p>I have having it look for tags and just named gameobjects.  But no luck.  Any idea on what I did wrong?</p>*_

Let's simplify your while loop to just the things that deal with its exit case, i:

while( i < theWayPoints.length ) {
 if ( num1 < num2 ) {
  i++;
 }
}

If you enter the while loop while num1 >= num2 (i.e. while the character is farther than change from ANY WAYPOINT) it is an infinite loop.

Infinite loops are very very bad.

You might just need a "yield;" at the end of the while block.

Start by adding some

Debug.Log("my message");

functions into your PathOne() function in many different places. Make sure you change the message to something different for each one you place.

I'd put them like this:

while(i<theWayPoints.length)
{
    Debug.Log(1);
    if (Vector3.Distance (transform.position , CurrentWaypoint.transform.position) < change)
    {
        Debug.Log(2);
        CurrentWaypoint = nextWaypoint;

        if (CurrentWaypoint == GameObject(theWayPoints*))*
 *{*
 *Debug.Log(3);*
 *i++;*
 _nextWaypoint = GameObject(theWayPoints*);*_
 _*}*_
 _*else*_
 _*{*_
 _*Debug.Log(4);*_
 _*Destroy(gameObject);*_
 _*}*_
 _*}*_ 
_*}*_
_*```*_
_*<p>Run that code and see if you can see the debug log.  Does it get stuck in an infinite loop?  Do certain lines of code never get called?  Please do this and update your answer.</p>*_