Слушатели, не работающие над, не разрушают на объектах нагрузки в единстве - PullRequest
0 голосов
/ 19 января 2019

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

Вот список событий, которые прекращают ее работу:

  1. При первом запускеигра, слушатель работает как задумано, кнопки создаются в скрипте, и слушатель добавляется.
  2. Я меняю сцену, не уничтожая объект сценарием, содержащим слушателя.
  3. Когда сцена меняется обратно, сценарий воссоздает кнопки и повторно добавляет слушателя к кнопкам.
  4. Используя простой журнал для проверки метода, который должен запустить слушатель, журнал больше не будет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 прослушиватель?

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

Я сейчас попытался добавить слушателя в отдельные сценарии в методе пробуждения кнопок.Тем не менее, слушатель не будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...