- Home /
Static variables
Hi!
I was wondering if you could use other things than static variables in your script.
I'm trying to call a function from one script to another, and for that I'm using static. I've heard that you should avoid them, so do any of you guy sknow what I can use instead?
There is nothing else, otherwise this would have been answered in some other topic already......
..so.. I guess you're screwed.
I dunno, I hear there's this new thing called Google out. $$anonymous$$aybe they have a clue?
Yes you can call it without using static. If you use static, it will continue regardless if you load different levels and it's best to avoid it if you aren't using it for things like stats or things you need to constantly call. If you are using C# there is a way to reset the variable when the level loads, but for java it's impossible. You can call it through script and if your using Js, first answer on this paged helped me http://answers.unity3d.com/questions/607476/accessing-and-changing-a-float-variable-in-another.html
Answer by Nerevar · Jun 26, 2014 at 10:15 AM
Hello,
You just have to keep a reference of your class in other scripts. Here is an example:
public class firstClass : MonoBehaviour{
public void SayHello(){
Debug.Log("Hello !");
}
}
Then reference the firstClass in your second class by assigning it from the inspector.
public class secondClass{
public firstClass firstClassRef;
void Start(){
firstClassRef.SayHello();
}
}
Or reference it by script if you want to keep it private.
public class secondClass : MonoBehaviour{
firstClass firstClassRef ;
void Start(){
if( gameObject.GetComponent("firstClass") as firstClass == null)
firstClassRef = gameObject.AddComponent("firstClass") as firstClass ;
firstClassRef.SayHello();
}
}
In this second case we check if the firstClass script is attached to the same gameObject as secondClass if not we add it.
regards
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Pause Menu background problem 0 Answers
Global Varible Problem 2 Answers
GetComponent().enabled = true; 1 Answer
Script is not working at all 2 Answers