\$\begingroup\$
\$\endgroup\$
I have code here which will change a sprite depending on the variables called gunUpgrade and moveUpgrade. Any way to make the code simpler or shorter? I'm using Unity 3D.
if (gunUpgrade > 0 && moveUpgrade > 0)
{
if (gunUpgrade == 1)
{
// For every moveupgrade, set the sprite to array number
if (moveUpgrade == 1) { currentSprite = playerSprites[8]; }
else if (moveUpgrade == 2) { currentSprite = playerSprites[9]; }
else if (moveUpgrade == 3) { currentSprite = playerSprites[10]; }
else if (moveUpgrade == 4) { currentSprite = playerSprites[11]; }
}
if (gunUpgrade == 2)
{
if (moveUpgrade == 1) { currentSprite = playerSprites[12]; }
else if (moveUpgrade == 2) { currentSprite = playerSprites[13]; }
else if (moveUpgrade == 3) { currentSprite = playerSprites[14]; }
else if (moveUpgrade == 4) { currentSprite = playerSprites[15]; }
}
if (gunUpgrade == 3)
{
if (moveUpgrade == 1) { currentSprite = playerSprites[16]; }
else if (moveUpgrade == 2) { currentSprite = playerSprites[17]; }
else if (moveUpgrade == 3) { currentSprite = playerSprites[18]; }
else if (moveUpgrade == 4) { currentSprite = playerSprites[19]; }
}
}
tim
25.3k3 gold badges31 silver badges76 bronze badges
asked Apr 10, 2016 at 13:53
2 Answers 2
\$\begingroup\$
\$\endgroup\$
0
Use some math.
currentSprite = playerSprites[gunUpgrade*4+4+moveUpgrade-1];
answered Apr 10, 2016 at 14:01
\$\begingroup\$
\$\endgroup\$
2
I suggest writing it as
currentSprite = playerSprites[4 * (gunUpgrade + 1) + (moveUpgrade - 1)];
Consider laying out the elements of playerSprites
so as to require fewer ±1 operations.
Note that you must ensure that gunUpgrade
never exceeds 3, and moveUpgrade
never exceeds 4.
answered Apr 10, 2016 at 16:02
-
\$\begingroup\$ Sorry for the lack of a detailed answer but in the end this is the same as I suggested. \$\endgroup\$Bruno Costa– Bruno Costa2016年04月10日 16:18:21 +00:00Commented Apr 10, 2016 at 16:18
-
3\$\begingroup\$ @BrunoCosta: But he lack of a detailed answer make it so your code is "magic", and you leave a few important details such as the limitation of it, or how to scale it up. \$\endgroup\$DrakaSAN– DrakaSAN2016年04月10日 20:27:17 +00:00Commented Apr 10, 2016 at 20:27
lang-cs