- Home /
Help with more efficient code
I would like some help writing some more efficient code, I have this code here:
public void accel1Check()
{
currentAchievement = accel1Description;
currentAchievement.active = true;
}
public void accel2Check()
{
currentAchievement = accel2Description;
currentAchievement.active = true;
accel1Description.active = false;
}
I have my achievements mapped to buttons, when the user presses a button I would like to display the information it holds, the problem now is they overlap each other unless I disable them all when I press on one. This is not efficient as I have around 20 achievements and so would like to minimize the code.
I think I need something like a currentAchievement variable and previous achievement variable which will hold this data but I'm having some trouble figuring it out, if anyone could help here I'd appreciate it
Answer by JayFitz91 · Sep 19, 2014 at 08:43 PM
I've managed to get it working more efficiently, I use a current and previous achievement variable to hold both sets of data, I then use the function at the botton to check whether to previous achievement is set to null, if it is not, I then set the previous achievement to be set to the current achievment, then set the current achievement to that of the new button I press, sounds like a mouthful, hopefully the code makes it clearer:
public GameObject accel1Description;
public GameObject accel2Description;
public GameObject bounce1Description;
private GameObject currentAchievement;
private GameObject previousAchievement;
void Start()
{
previousAchievement = null;
}
public void accel1Check()
{
checkAchieveIsNull();
currentAchievement = accel1Description;
currentAchievement.active = true;
}
public void accel2Check()
{
checkAchieveIsNull();
currentAchievement = accel2Description;
currentAchievement.active = true;
}
public void bounce1Check()
{
checkAchieveIsNull();
currentAchievement = bounce1Description;
currentAchievement.active = true;
}
void checkAchieveIsNull()
{
if (currentAchievement != null)
{
previousAchievement = currentAchievement;
previousAchievement.active = false;
}
else
previousAchievement = null;
}
Answer by SnotE101 · Sep 19, 2014 at 08:44 PM
Create an array of booleans controlling each achievement. Then have an int, an achievement number, so achievementBool[achievementNumber] = true.