首页 > 解决方案 > Unity OnClick.AddListener 停止工作

问题描述

我正在构建一个纸牌配对游戏。在开始时,游戏会生成 16 个按钮(卡片),每个按钮都有一个监听器,以便在单击时做出响应。现在,直到昨天,这一切都很好。

今天我尝试在场景中添加一个粒子发射器(未更改代码)。当我运行场景来测试发射器时,按钮不起作用。我移除了发射器,但问题仍然存在。我检查了检查器中的按钮,并且没有添加任何 onClick 事件。

无论我做什么,我似乎都无法再将 onClick 添加到按钮上。

这是我的代码:

      void Start()
        {
            GetButtons();
            AddListeners();
            AddGamePuzzles(); 
            ShuffleSprites(gamePuzzles);
    
            gameGuesses = gamePuzzles.Count / 2;
        }
    
        void GetButtons()
        {
            GameObject[] BtnObjects = GameObject.FindGameObjectsWithTag("PuzzleButton");
    
            for(int i = 0; i < BtnObjects.Length; i++)
            {
                btns.Add(BtnObjects[i].GetComponent<Button>());
                btns[i].image.sprite = bgImage; 
            }
        }
    
        void AddListeners()
        {
            foreach (Button btn in btns)
            {
                btn.onClick.AddListener(() => PickAPuzzle());
            }
        }

任何帮助将不胜感激。我已经把头发拔了好几个小时了。

标签: c#unity3ddebuggingbuttononclick

解决方案


首先,我要感谢那些花时间帮助我解答的人。

问题原来是我自己的愚蠢。我不小心禁用了 Canvas 上的 Graphic Raycaster,导致无法单击按钮。重新启用 Raycaster 立即解决了这个问题。

我从这一切中学到了一些东西:当您在游戏运行时向按钮添加侦听器时,该侦听器不会显示在检查器中,但它就在那里。


推荐阅读