2015-09-16 4 views
0

У меня есть 4 кнопки, и каждый из них мигает при нажатии кнопки. Однако, если вы нажмете кнопку, тогда, когда кнопка темнее (мигает), щелкните еще один, эта кнопка останется темной. Я хочу сбросить цвет спрайта, прежде чем отключать их, но он не работает. При нажатии кнопок они больше не мигает ....Как изменить альфа спрайта через скрипт в Unity

Вот код:

void Start() { 
     easy.GetComponent<SpriteRenderer>().color = color; 
    } 

    void Update() { 
     if(difficultySelected[0] == true){ 
      enemyBehavior.shotsPerSecond = 0.2f; 
      //Enabling the selected button 
      easy.enabled = true; 

      //Reseting the colors 
      normal.GetComponent<SpriteRenderer>().color = color; 
      hard.GetComponent<SpriteRenderer>().color = color; 
      expert.GetComponent<SpriteRenderer>().color = color; 

      //Disabling the 'unselected' buttons 
      normal.enabled = false; 
      hard.enabled = false; 
      expert.enabled = false; 

      easy.Play("Difficulty"); 
     }else if(difficultySelected[1] == true){ 
      enemyBehavior.shotsPerSecond = 0.5f; 
      normal.enabled = true; 

      easy.GetComponent<SpriteRenderer>().color = color; 
      hard.GetComponent<SpriteRenderer>().color = color; 
      expert.GetComponent<SpriteRenderer>().color = color; 

      easy.enabled = false; 
      hard.enabled = false; 
      expert.enabled = false; 

      normal.Play("Difficulty"); 
     }else if(difficultySelected[2] == true){ 
      enemyBehavior.shotsPerSecond = 1; 
      hard.enabled = true; 

      easy.GetComponent<SpriteRenderer>().color = color; 
      normal.GetComponent<SpriteRenderer>().color = color; 
      expert.GetComponent<SpriteRenderer>().color = color; 

      easy.enabled = false; 
      normal.enabled = false; 
      expert.enabled = false; 

      hard.Play("Difficulty"); 
     }else if(difficultySelected[3] == true){ 
      enemyBehavior.shotsPerSecond = 2; 
      expert.enabled = true; 

      easy.GetComponent<SpriteRenderer>().color = color; 
      normal.GetComponent<SpriteRenderer>().color = color; 
      hard.GetComponent<SpriteRenderer>().color = color; 

      easy.enabled = false; 
      normal.enabled = false; 
      hard.enabled = false; 

      expert.Play("Difficulty"); 
     } 
    } 
+0

звучит как задачу отладки, что у вас впереди себя .. начать отладки – MethodMan

+0

Я не знаком с Unity3d, но альфа, как правило, является каналом в цвете. 'RGBA' .. Я (думаю, что это GBRA в 32-битных файлах Targa, но вам вообще не нужно иметь дело с порядком байта в управляемом ..) –

+0

маскирование - это еще один метод, который применяется ко всему изображению/графике/текстуре –

ответ

0

Вы можете написать:

color.a = 1f; // value between 0 and 1, where 1 is opaque 

//Resetting the colors 
normal.GetComponent<SpriteRenderer>().color = color; 
hard.GetComponent<SpriteRenderer>().color = color; 
expert.GetComponent<SpriteRenderer>().color = color;