【问题标题】:Unity OnClick.AddListener Stopped WorkingUnity OnClick.AddListener 停止工作
【发布时间】:2020-09-30 21:09:02
【问题描述】:

我正在开发一款纸牌配对游戏。在开始时,游戏会生成 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());
            }
        }

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

【问题讨论】:

  • 您不需要使用“+=”注册按钮。在以下帖子中查看我的答案:stackoverflow.com/questions/37165402/…
  • 控制台是否显示任何错误?你有没有放一些日志来看看到底发生了什么?您的代码是否通过 AddListeners(),AddListeners 是否获得了 btns 的正确值?等

标签: c# unity3d debugging button onclick


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2016-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-13
    • 1970-01-01
    相关资源
    最近更新 更多