- Home /
Variables Set by Function Outside of Script
I am Constructing a script that holds all of the basic functions that i use on most projects, so i can save time when developing. One of my functions is causing a problem.
It executes fine but the variable CountdownTimer does not reset locally in the scripts that is executing it.
where it is supposed to reset to the value held in Static Timer, it Stays at the Current Value.
public void WeaponFire (float StaticTimer, float CountdownTimer, GameObject BulletPrefab, int MouseButton, bool CanFire)
{
if (Input.GetMouseButton(MouseButton)) {
if (CanFire == true) {
Instantiate (BulletPrefab, transform.position, Quaternion.identity);
CountdownTimer = StaticTimer;
}
}
}
Answer by Ben-Stoneman · Jan 29, 2013 at 05:15 PM
You have passed StaticTimer into WeaponFire and then modified it, however it has not changed in the class it came from. Floats are value types and so are passed by value, a copy is made in WeaponFire. You will need to pass these values by reference.
Try using Passing by reference: http://msdn.microsoft.com/en-us/library/0f66670z(v=vs.71).aspx#vclrfpassingmethodparameters_example5
Ben Stoneman
Thank you so much, this worked perfectly. Saves me time from having to rewrite the code each time i need to use it.
Your answer
Follow this Question
Related Questions
C# Null Reference Exception in Custom Function 1 Answer
C# Non-Static Member Rigidbody2D.MovePosition 1 Answer
How to make specific text in a string array Bold C# 2 Answers
The name 'Joystick' does not denote a valid type ('not found') 2 Answers
I need help with a script(brauche hilfe mit einen Script) 0 Answers