c# - 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);
}
我真的只需要返回函数在按下是或否按钮之前不返回。
我完全不知所措。
解决方案
如果你想显示一个弹出窗口,那么弹出窗口应该负责接下来发生的事情。
所以你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 做同样的事情,你应该已经准备好了。
推荐阅读
- arrays - 如何在 Angular 反应形式中使用复选框对象数组
- arrays - p和put之间的区别
- bash - 如何检查字符串是否在特定索引处包含多个字母
- google-bigquery - BigQuery 转移:Google Ads(以前的 AdWords):转移作业成功,但没有数据
- python - 在 python3 中创建一个多合一请求函数以缩短更简单的代码
- react-native - 根据里面的内容调整 Webview 高度
- node.js - “umi dev”之后的幕后花絮
- haskell - 用于元组扩展的镜头?
- python - 如果它是json列表中的单个元素,如何提取数字?
- graph - 用一些条件修改dijkstra的算法