【问题标题】:How to Add an onClick listener with a variable to a button?如何将带有变量的 onClick 侦听器添加到按钮?
【发布时间】:2022-05-20 01:38:03
【问题描述】:

我正在尝试通过代码在按钮上添加函数调用。我可以轻松地为我的下拉菜单做到这一点,但由于某种原因,它不适用于我的按钮。 这是我的代码:

btn.GetComponent<Button>().onClick.AddListener(onSpriteSheetChange(spriteSheet.Grass)); 

这段代码给了我错误:无法从“void”转换为“UnityEngine.Events.UnityAction”Assembly-CSharp

【问题讨论】:

  • 我不团结,但我认为您的委托类型不匹配

标签: c# unity3d


【解决方案1】:

试试下面的sn-p:

btn.GetComponent<Button>().onClick.AddListener(() => onSpriteSheetChange(spriteSheet.Grass));

【讨论】:

    【解决方案2】:

    Addlistener 采用 UnityAction,因此如果您输入常规的 void 方法,您将遇到此问题。如上所述,您可以使用 lambda 表达式将您的调用放入匿名函数中:

    ()=> method(attr);
    // Or multiple lines using
    ()=>{
    //code 
    }
    

    【讨论】:

      【解决方案3】:

      onSpriteSheetChange 不会返回您需要传入的内容

      () => onSpriteSheetChange(spriteSheet.Grass)
      

      作为 AddListener 的参数,因此它知道哪个事件和精灵表。

      见: https://docs.unity3d.com/ScriptReference/Events.UnityEvent.AddListener.html

      【讨论】:

        猜你喜欢
        • 2011-07-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-14
        • 1970-01-01
        • 1970-01-01
        • 2011-08-21
        • 2021-03-21
        相关资源
        最近更新 更多