首页 > 解决方案 > Unity UI 弹出窗口

问题描述

我是 Unity 的新手,其中许多原则我只是空白。

我建立了一个对话系统,它工作得很好,但我想制作一个确认框。

我已经设法让确认框拉起,但我似乎无法弄清楚如何在代码返回到具有正确布尔值的对话管理器之前等待其中一个是/否按钮被按下。

现在代码在对话框后面推进。这是预期的。

我尝试了一个枚举器,但我一定做错了,因为这无关紧要。

我刚刚清理了代码以尝试从头开始。

public bool AskForTakingMoney(){
        takingMoneyBox.SetActive(true);
        goldText.text = "Current Gold: " + GameManager.instance.currentGold.ToString() + "G";
        questionText.text = "Pay the " + DialogManager.instance.goldAmount + "G?";
        //Wait here until yes or no button pushed
        return saysYes;
    }
    public void SaysYes(){
        saysYes = true;
        selectedAnswer = true;
        takingMoneyBox.SetActive(false);
    }
     public void SaysNo(){
        saysYes = false;
        selectedAnswer = true;
        takingMoneyBox.SetActive(false);

    }

我真的只需要返回函数在按下是或否按钮之前不返回。

我完全不知所措。

标签: c#unity3d

解决方案


如果你想显示一个弹出窗口,那么弹出窗口应该负责接下来发生的事情。

所以你AskForTakingMoney永远不应该返回一个值。相反,您需要onclick为 Yes 和 No 按钮分配事件。

您的代码应该是:

public void AskForTakingMoney(){
        takingMoneyBox.SetActive(true);
        goldText.text = "Current Gold: " + GameManager.instance.currentGold.ToString() + "G";
        questionText.text = "Pay the " + DialogManager.instance.goldAmount + "G?";
    }

    public void SaysYes(){           
        takingMoneyBox.SetActive(false);
        // Your withdraw money code here.
    }

     public void SaysNo(){
        takingMoneyBox.SetActive(false);
    }

然后在编辑器中,单击是按钮。您应该会看到一个类似图片中的 onclick 字段。单击加号,然后拖入包含上述函数代码的 MonoBehaviour 对象。将其拖入后,您应该可以SaysYes从出现在“YourScriptName”下的下拉列表中进行选择 -> “SaysYes()”

对你的 No Button 做同样的事情,你应该已经准备好了。

点击


推荐阅读