我正在写一个游戏,其中包括组合系统(这是一个脚本)。目前我的输入是按键,但我想改变它,让它采用按键输入。
下面是输入代码。
void Update() {
if (Input.GetKeyDown(KeyCode.E))
input = new ComboInput(AttackType.heavy);
if (Input.GetKeyDown(KeyCode.R))
input = new ComboInput(AttackType.light);
}
关于UI按钮的是,它们需要一个onPressed()命令, 但我不能做一个函数来提供这个输入,因为它已经在一个更新函数中了。如果有任何帮助,我将不胜感激。
你可以为按钮添加一个委托,当它被点击时,就可以调用它。
例如,你可以为按钮添加一个委托,当它被点击时调用它。
private void Awake()
{
Button buttonComponent = GetComponent<Button>();
buttonComponent.onClick.AddListener(OnButtonClicked)
}
private void OnButtonClicked()
{
Debug.Log("The button has clicked!");
}
你必须把这个脚本附加到你的Button gameobject上。
你也可以直接通过检查器将事件函数直接添加到你的按钮上,但是这个函数应该是 public
以便被检查员访问。如果你不希望你的函数被其他类看到,那么上面的方法将是你最好的选择。
在你的情况下,这是我的建议。
[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);
}
EDIT: 如果你想要的是编辑你现有的战斗脚本(而不是创建一个新的单独组件), 那么你必须把你的按钮赋予你的战斗脚本. 那就是 buttonE, buttonR
你必须通过unity检查器给它一个参考。如果它已经做了,那么你可以自由地删除你的 Update()
功能,如果没有其他与之相关的东西。