- Home /
 
Variable Not Changing.
Hi all, I've bumped in to another problem. So I have a variable here:
 private var currentNode : GameObject;
 
               And I have two functions:
 function MarkingCurrentAsClosed()
 {
     var nodeInfo : NodeInfo = currentNode.GetComponent(NodeInfo);
     nodeInfo.isCurrent = true;
     nodeInfo.Closed = true;
 }
 #------------------------------------------
 public function PickAndMove()
 {
     var leastFCost : int;
     var leastCostNode : GameObject;
     
     for(Node in openList)
     {
         var nodeInfo : NodeInfo = Node.GetComponent(NodeInfo);
         if(leastFCost == 0)
         {
             leastFCost = nodeInfo.F;
             leastCostNode = Node;
         }
         
         else
         {
             if(leastFCost > nodeInfo.F)
             {
                 leastFCost = nodeInfo.F;
                 leastCostNode = Node;
             }
             
             if(leastFCost <= nodeInfo.F)
             {
                 leastFCost = leastFCost;
             }
         }     
     }
     
     var currentNodeInfo : NodeInfo = currentNode.GetComponent(NodeInfo);
     currentNodeInfo.isCurrent = false;
     currentNode = leastCostNode;
 }
 
 
               As you can see, in the function "PickAndMove" I have changed the value of "currentNode" to the value in "leastCostNode".
 currentNode = leastCostNode;
 
               And when I tested this, I discovered that the value of currentNode is not changing, do I have to make something like Global or Public, And what am I doing wrong? Any Answer or related unity Forms will be appreciated.
Full script:
 import System.Collections.Generic;
 
 private var Nodes : GameObject[];
 private var currentNode : GameObject;
 private var targetNode : GameObject;
 private var Coordinates = new Array (); 
 private var reachTarget : boolean = false;
 public var startProject : boolean = false;
 private var firstEntering : boolean = true;
 private var Update : boolean = false;
 private var openList : List.<GameObject> = new List.<GameObject>();
 
 function Start() 
 {
     AssignCoords();
     Nodes = GameObject.FindGameObjectsWithTag("Node");    
 }
 
 function FixedUpdate () 
 {
     if(startProject == true)
     {
         if(reachTarget == false)
         {
             
             Astar_Pathfinding();
         }
     }
 }
 
 function Initialize()
 {
     for(Node in Nodes)
     {
         var nodeInfo : NodeInfo = Node.GetComponent(NodeInfo);
         if(nodeInfo.isStart == true)
         {
             currentNode = Node;
         }    
         
         if(nodeInfo.isEnd == true)
         {
             targetNode = Node;
         }
     }
 }
 
 function AssignCoords()
 {
     Coordinates.length = 8;
     Coordinates[0] = Vector3(0,0,1);
     Coordinates[1] = Vector3(1,0,1);
     Coordinates[2] = Vector3(1,0,0);
     Coordinates[3] = Vector3(1,0,-1);
     Coordinates[4] = Vector3(0,0,-1);
     Coordinates[5] = Vector3(-1,0,-1);
     Coordinates[6] = Vector3(-1,0,0);
     Coordinates[7] = Vector3(-1,0,1);
 }
 
 function Astar_Pathfinding()
 {
     if(firstEntering == true)
     {
         Initialize();
         firstEnetering = false;
     }
     
     MarkingCurrentAsClosed();
     AnalyzeAdjacentsBlocks();
     PickAndMove();
 }
 
 function MarkingCurrentAsClosed()
 {
     var nodeInfo : NodeInfo = currentNode.GetComponent(NodeInfo);
     nodeInfo.isCurrent = true;
     nodeInfo.Closed = true;
 }
 
 function AnalyzeAdjacentsBlocks()
 {
     var currentNodeInfo : NodeInfo = currentNode.GetComponent(NodeInfo);
     
     for(i = 0; i < Coordinates.length; i++)
     {
         for(Node in Nodes)
         {
             var nodeInfo : NodeInfo = Node.GetComponent(NodeInfo);
             if(Node.transform.position == currentNode.transform.position + Coordinates[i] && nodeInfo.Closed == false)
             {                
                 if(nodeInfo.Opened == true)
                 {                    
                     var beforeG : int = nodeInfo.G;
                     var beforeF : int = nodeInfo.F;
                     
                     nodeInfo.FindingH(targetNode);
                     nodeInfo.FindingG(i);
                     nodeInfo.FindingF(currentNodeInfo.F);
                     
                     if(Update == true)
                     {
                         nodeInfo.UpdatingCosts();
                         Update = false;
                     }
                     
                     CompareNode(Node, nodeInfo.tG, nodeInfo.tF, beforeG, beforeF);
                 }
                 
                 else
                 {
                     nodeInfo.Opened = true;
                     openList.Add(Node);
                     nodeInfo.Parent = currentNode;
                 
                     if(targetNode != null)
                     {    
                         nodeInfo.FindingH(targetNode);
                         nodeInfo.FindingG(i);
                         nodeInfo.FindingF(currentNodeInfo.F);
                         nodeInfo.UpdatingCosts();
                     }    
                 }
             }
         }
     }
 }
 
 function CompareNode(Node, newG, newF, beG, beF)
 {
     if(newF > beF)
     {
         return;
     }
     
     else
     {
         Update = true;
     }
 }
 
 public function PickAndMove()
 {
     var leastFCost : int;
     var leastCostNode : GameObject;
     
     for(Node in openList)
     {
         var nodeInfo : NodeInfo = Node.GetComponent(NodeInfo);
         if(leastFCost == 0)
         {
             leastFCost = nodeInfo.F;
             leastCostNode = Node;
         }
         
         else
         {
             if(leastFCost > nodeInfo.F)
             {
                 leastFCost = nodeInfo.F;
                 leastCostNode = Node;
             }
             
             if(leastFCost <= nodeInfo.F)
             {
                 leastFCost = leastFCost;
             }
         }     
     }
     
     var currentNodeInfo : NodeInfo = currentNode.GetComponent(NodeInfo);
     currentNodeInfo.isCurrent = false;
     currentNode = leastCostNode;
 }
 
 
              Your answer
 
             Follow this Question
Related Questions
How do you achieve variables and functions that are global between scenes? What is the BEST way? 1 Answer
How to make a GLOBAL variable in javascript (Unity) 0 Answers
Global variables - static keyword ? UnityScript? javascript? 1 Answer
GetComponent, What is it ? 1 Answer
Is there any way to edit variables inside other scripts without declaring them as static? 1 Answer