# if (score >= 10) Executes endlessly. How to prevent it?

Q1. This is driving me nuts. I’m trying to make a level up system, but i’m too much of a newbie to do it it seems. So I wrote this code:

``````		if (score >= 10) {
speed = 20.0f;
levelUpNow ();
}
if (score >= 20) {
speed = 25.0f;
levelUpNow ();
}
``````

But this just endlessly executes the levelUpNow function. I want it to execute just once, then on score 100 do the same, once.

I imagine it’s because once the score reaches 10 it’s always 10 or above, so that’s why it makes a loop, but I’ve no idea how to prevent it. I tried doing if (score == 10) but that didn’t work at all.

Can anyone help me make this possible? Or…

Q2. Is it possible to do something like this:

if score == (10, 20, 30, 40, 50, 60, 70, 80, 90 ,100) then levelUpNow();

Basically execute the funtion everytime you reach a score of one of the above values.

It’s because you don’t have a value, typically an int in your case, to keep track of the current level.

``````public class YourClass : MonoBehaviour
{
// This value will keep track of the current level and prevent wrong level ups
private int currentLevel = 0;

void Update()
{
if (currentLevel < 1 && score >= 10) {
speed = 20.0f;
levelUpNow ();
currentLevel++;
}

if (currentLevel < 2 && score >= 20) {
speed = 25.0f;
levelUpNow ();
currentLevel++;
}
}
}
``````

For your second question, yes, you could make a loop:

``````public class YourClass : MonoBehaviour
{
// This value will keep track of the current level and prevent wrong level ups
private int currentLevel = 0;

private int[] levelUpScores = { 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 };

void Update()
{
while (score >= levelUpScores[currentLevel] && currentLevel < levelUpScores.Length) {
speed += 5f; // This will increment the speed 5f at each level
levelUpNow ();
currentLevel++;
}
}
}
``````

Note that in this example:

• the speed will increase linearly, 5f at each level,
• the last level is level 10; the score will increase without level change.