以前从未使用过监听器,所以我可能只是不了解其工作方式如何?但是发生了什么事,是每次加载特定场景时,我都向按钮添加了一个侦听器。
这是停止其工作的事件列表:
添加了侦听器的位置:
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会弄乱听众吗?
由于提出了问题,我进一步查看了程序的其余部分,但找不到其他地方的错误。在文档中也找不到与此相关的任何内容吗?仍然找不到修复程序。
我现在尝试在按钮的awake方法中的单独脚本中添加侦听器。收听者仍然无法使用。