A local variable is one that we create for a specific event
only and then discard when the event has finished
(the only exception to this is in the script resources, where a var
declared variable is local to the script and then discarded). Why
would we need them? Well, variables take up space in memory and it
may be that we are only going to use them for one operation or
function in which case we only need to have it in memory for that
short time that it's used. This keeps your code base clean and tidy
as well as keeping memory space optimised for the things that
really need it. To declare a local variable we use the function
var like this:
var i, num, str;
i = 0;
num = 24.5;
str = "Hi there!";
All of the variables created above will be "forgotten" (ie: removed
from memory) at the end of the event (or script) in which they were
created. You must be careful that the name you give var declared
variables does not coincide with another instance variable within
the object running the code, and also make sure that you have no
intention of using the value stored in that variable outside of the
event declare it in. These variables are used a lot in programs,
especially in loops for counting iterations, or when using a value
several times in one operation that is not going to be repeated
again. Here are another couple of examples:
var i = 0;
repeat (10)
{
inventory[i] = 0;
i+=1;
}
The above code creates a local variable called "i" and sets it to
0, all in the same line. Note that in previous versions of
GameMaker you had to declare your local variables first and
then assign them values, but in this version you can declare
and assign them a value at the same time. The above code
then uses this variable to initialize an array. As the variable "i"
is not going to be used for any further functions in the instance
other than this, it can be local in scope. Here is one more
example:
var xx,yy;
xx = x - 32 +irandom(64);
yy = y - 32 +irandom(64);
instance_create(xx, yy, obj_blood);
Here we have used the local variables to store some random
coordinates that we then use to create an instance. In this example
you can see that it is not strictly necessary that we use these
variables but for the sake of readability and ease of use, we do.
It is MUCH clearer and obvious what we are doing there than if we
used this code:
instance_create(x - 32 + irandom(64), y - 32 + irandom(64), obj_guts);
One other thing about var declared variables should be noted... As
they are unique to the event that runs them, they can be used in
any other instances through code too! This means that we can use
these variables to set and change things in other instances using
the "with()" construct (there is a section on this in the GML
Overview section of the manual). The actual code itself would
look something like this:
var num = instance_number(obj_Enemy);
with (obj_Enemy)
{
if num>10 instance_destroy();
}
The above code works because the var declared variable is local to
the event (or script) it is contained in, not the instance,
nor the game world, and so can be used in any function in any
object as long as it is in the same code block.