- Home /
Set only one true
Hi everyone, I have a button, and when you click it, I want the season to change. I don't know what is wrong with my script: var season : String; var summer = false; var autumn = false; var winter = false; var spring = false;
function Awake()
{
summer = true;
}
function Update()
{
if(summer)
{
season = "Summer";
}
if(autumn)
{
season = "Autumn";
}
if(winter)
{
season = "Winter";
}
if(spring)
{
season = "Spring";
}
}
function nextSeason()
{
if(summer)
{
autumn = setSeason();
}
if(autumn)
{
winter = setSeason();
}
if(winter)
{
spring = setSeason();
}
if(spring)
{
summer = setSeason();
}
}
function OnGUI()
{
GUI.Box(Rect(10, 10, 240, 60),"This is the season: " + season);
if(GUI.Button(Rect(10, 80, 240, 60), "Next Season"))
{
nextSeason();
}
}
function setSeason()
{
spring = summer = autumn = winter = false;
return true;
}
Thanks for your help!
When i click the button once, nothing happens at all. I tried switching the order in the nextSeason function and depending on which one is first, it will change seasons but then it gets stuck at a certain one.
Answer by hvilela · Sep 30, 2012 at 10:37 PM
Your code is doing this:
Is summer?
Yes, so change to autumn.
Is autumn?
Yes (you just changed it), so change it to winter.
Is winter?
Yes (you just changed it), so change it to spring.
Is spring?
Yes (you just changed it), so change it to summer.
So it gets back to summer. Add "elses" to fix it.
if (summer) {
autumn = setSeason();
} else if (autumn) {
winter = setSeason();
} else if (winter) {
spring = setSeason();
} else if (spring) {
summer = setSeason();
}