2016-03-10 5 views
0

Я создаю функцию для изменения фонового изображения кнопки переключения, когда она нажата, но она не работает для меня.Функция изменения фона кнопки переключения при нажатии

я в настоящее время эту функцию:

public Image Background1; 
public Image Background2; 
public Toggle theToggle; 

public void ChangeBackground() 
     { 
     if (theToggle.isOn) { 
      theToggle.image() = Background1; 
     } 
     else 
     { 
      theToggle.image() = Background2; 
      } 
     } 

Моя проблема заключается в том, что в видовом я не получаю возможность слота для добавления изображения в Background1 и background2, как это происходит на других сценариях. Кроме того, parameterer изображения не распознается редактором, несмотря на то, что находится на опорных сценарии, и что я добавил lybrary UI с помощью:

using UnityEngine.UI; 

Кроме того, я пытался поставить ChangeBackground() функцию внутри Update() функция, как это и я получаю синтаксическую ошибку:

public Image Background1; 
public Image Background2; 
public Toggle theToggle; 

void Update() 
    { 
     public void ChangeBackground() 
     { 
     if (theToggle.isOn) { 
      theToggle.image() = Background1; 
     } 
     else 
     { 
      theToggle.image() = Background2; 
      } 
     } 
    } 

ошибка Этот синтаксический анализ очень странно, потому что это так, как я делал в других сценариях. Вы можете мне помочь?

+0

вы просто «()», который не должен быть там. это просто '.image =' – Fattie

+0

НЕ ДЕЛАЙТЕ "+ =", как показано ниже; это не ваша проблема. – Fattie

ответ

2

Для этого у вас есть ошибка компилятора, потому что вы пытаетесь вызвать функцию «изображение» и назначить ей значение одновременно. Я думаю, вы хотите установить атрибут изображения в некоторой Sprite переменного типа «Background1»

Таким образом, вы бы изменить, что, как это:

public void ChangeBackground() 
{ 
     if (theToggle.isOn) { 
      theToggle.image = Background1; 
     } 
     else 
     { 
      theToggle.image = Background2; 
      } 
     }   
} 

Теперь, когда есть ошибка компилятора, инспектор будет не обновлять новые поля из сценария. Так что, если вы объявили переменные где-то в сценарии (обычно после объявления класса), как так:

public Image background1; 
public Image background2; 

Они появятся в инспекторе, ожидая, чтобы быть установлен, если у вас нет ошибок компилятора и они public

Кроме того, вы не можете поместить объявление функции, а также не хотите, на C# и большинство языков программирования.

Вы ДОЛЖНЫ перетащить функцию ChangeBackground НА ВАШУ КАРТУ. Перетащите его здесь ...

enter image description here


Примечание! следующее является высокоразвитой информацией, не имеющей непосредственного отношения к вопросу Роста как такового.

Простой способ применить функцию ChangeBackground всякий раз, когда тумблер переключен, вы можете просто сделать это в сценарии, включив эти две функции:

void OnEnable() 
{ 
    theToggle.onValueChanged += ChangeBackground 
} 

void OnDisable() 
{ 
    theToggle.onValueChanged -= ChangeBackground 
} 
+0

Я только что добавил объявление переменных в ответ, я посмотрю ваш ответ сейчас, спасибо! –

+0

Почему я не могу помещать эту функцию в Update()? –

+0

Я отредактировал ответ несколько раз; см. новое дно для вызова функции всякий раз, когда изменяется переключатель. –

Смежные вопросы