[英]Unity how to get button input inside C# script?
我正在编写一个包含组合系统的游戏(它是一个脚本)。 我目前有它,所以输入是键,但我想改变它,所以它需要按下按钮输入。
这是输入代码:
void Update() {
if (Input.GetKeyDown(KeyCode.E))
input = new ComboInput(AttackType.heavy);
if (Input.GetKeyDown(KeyCode.R))
input = new ComboInput(AttackType.light);
}
关于 UI 按钮的问题是它们采用 onPressed() 命令,但我无法制作 function 来提供此输入,因为它已经在更新 function 中。 任何帮助,将不胜感激。
您可以为按钮添加一个委托,以便在单击时调用它。
例子:
private void Awake()
{
Button buttonComponent = GetComponent<Button>();
buttonComponent.onClick.AddListener(OnButtonClicked)
}
private void OnButtonClicked()
{
Debug.Log("The button has clicked!");
}
您必须将此脚本附加到您的 Button 游戏对象。
您也可以通过检查器直接将事件 function 添加到您的按钮,但 function 应该是public
的,以便检查器访问。 如果您不希望您的 function 被其他班级看到,那么以上将是您的最佳选择。
就你而言,这是我的建议:
[SerializeField]
private Button buttonE, buttonR;
private ComboInput input;
private void Awake()
{
buttonE.onClick.AddListener(OnButtonClicked_E);
buttonR.onClick.AddListener(OnButtonClicked_R);
}
private void OnButtonClicked_E()
{
input = new ComboInput(AttackType.heavy);
}
private void OnButtonClicked_R()
{
input = new ComboInput(AttackType.light);
}
编辑:如果您想要编辑现有的战斗脚本(而不是创建新的单个组件),那么您必须将按钮提供给您的战斗脚本。 即buttonE, buttonR
,您必须通过统一检查员提供参考。 如果它已经完成,那么如果没有其他相关内容,您可以自由删除您的Update()
function。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.