Global variables are null within functions?
Hi, I'm having some trouble with one of my functions. On my game manager script i have a global array of GameObjects and an int:
var word:GameObject[]; //an array of GameObjects
var wordLength:int; //this is defined later and used for word.Length
And then on the same script I have written a function:
function MyFunction(panelID:int, wordL:int){
for(var p = 0; p < wordL; p++){
if(word[p].GetComponent(PanelScript).matState == panelID){
switch(panelID){
case 1:
word[p].GetComponent(PanelScript).StateChange(7);
break;
case 2:
word[p].GetComponent(PanelScript).StateChange(0);
break;
default:
print("DEFAULT");
break;
}
}
}
}
I am calling this function from a different script that is attached to each one of word[]'s GameObjects with this line:
manager.GetComponent(ManagerScript).MyFunction(matState, arrSize);
arrSize on this script is an int equal to wordLength on the manager script. I would simply use wordLength within the function to loop thru the array, but for some reason it returns zero, causing the for loop to end before it starts.
So I passed in arrSize which holds the correct value in the function, but when I try to loop through word[], I get the "index out of range error" because it turns out word.Length also returns zero. At runtime word[] always shows the correct values in the inspector, and I have accessed it successfully in other functions, so why does MyFunction read it as zero?
Any help is greatly appreciated!
I think you have something else going wrong here. If word.Length was indeed 0, then you would not get an "out of range" error.
The program compiled, but I would get the error once the function called. From my understanding, trying to access the 4th (for example) element of an array with Length 0 would produce this error. It seems to me that word[] is nullified when the function is called, but only within the function.
I have printed a global string from this function as well, and it returned "". Is there any reason why this function would read all global var's as null?
Your answer
![](https://koobas.hobune.stream/wayback/20220612073404im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Any reason why global vars are null within certain functions? 0 Answers
particle system going wild 1 Answer
function being called twice at the same time causing an error. 1 Answer
Invoke function it is called only once 1 Answer
How do you create a generic function for custom types that are inherited from a generic class? C# 1 Answer