Никогда раньше не пользовался слушателями, поэтому я могу просто не понимать, как работает работа?Но что происходит, я добавляю слушателя к кнопке каждый раз, когда загружается определенная сцена.
Вот список событий, которые прекращают ее работу:
- При первом запускеигра, слушатель работает как задумано, кнопки создаются в скрипте, и слушатель добавляется.
- Я меняю сцену, не уничтожая объект сценарием, содержащим слушателя.
- Когда сцена меняется обратно, сценарий воссоздает кнопки и повторно добавляет слушателя к кнопкам.
- Используя простой журнал для проверки метода, который должен запустить слушатель, журнал больше не будетshow.
Где добавлен слушатель:
foreach (Sprite texture in spriteImages)
{
//Creates a button
GameObject button = Instantiate (shopButtonPrefab) as GameObject;
// gets the buttons image compnent for changing
Image buttonImage = button.GetComponent<Image> ();
Image[] images = button.GetComponentsInChildren<Image>();
int newIndex = spriteIndex;
button.GetComponent<Button> ().onClick.RemoveAllListeners ();
button.GetComponent<Button> ().onClick.AddListener (() => ChangePlayerSkin (newIndex));
spriteIndex++;
}
Метод, который должен быть вызван.
private void ChangePlayerSkin(int index)
{
selectedSkinIndex = index;
Debug.Log ("noo");
if (skinPurchased [index])
{
currentSkinIndex = index;
foreach (GameObject button in shopButtons)
{
button.transform.GetChild (2).gameObject.SetActive (false);
}
shopButtons [currentSkinIndex].transform.GetChild (2).gameObject.SetActive (true);
}
}
// Stops working after the scene is re-loaded
Только пытается показать соответствующий код.Кнопки создаются в методе OnSceneLoaded каждый раз, когда запускается определенная сцена.Затем слушатель добавляется.Почему слушатель работает только при первой загрузке сцены?И не каждый раз, когда сцена перезагружается.Не мешает ли dontdestroyonload прослушиватель?
С тех пор, как я задал вопрос, я еще раз осмотрел остальную часть программы и не могу найти ошибку, которая может быть где-либо еще.Также не можете найти что-нибудь в документации, касающейся этого?Все еще не могу найти исправление.
Я сейчас попытался добавить слушателя в отдельные сценарии в методе пробуждения кнопок.Тем не менее, слушатель не будет работать.