【问题标题】:Parameter" does not exist warning参数”不存在警告
【发布时间】:2020-09-26 14:39:26
【问题描述】:

背景: 我目前正在为我的 2D RPG 创建一个近战组合系统。玩家第一次攻击会触发第一次攻击动画,如果玩家选择第二次攻击,则会触发第二次攻击动画。我通过调用一个攻击函数来让系统工作,该函数根据我需要播放的动画传递一个字符串参数。

因此每帧都会调用 ComboOrder 函数来对动画进行排序,一旦玩家按下“E”键,就会使用“Attack-1”或“Attack-2”调用 Attack 函数。

问题:代码和动画工作正常,但是,在我注意到游戏的其他部分进行了多次更改后,每次按“E”键时都会收到警告。我所做的更改与此完全无关,因此我看不到与警告之间的联系。

Parameter" does not exist

我尝试过的解决方案:我已经在网上搜索了答案,但是没有一个适合我的问题。似乎 Unity 认为我正在传递字符串 " 这将表示语法错误,但我已经仔细检查了我的代码,但我找不到任何东西。我还听说它是 Unity 中的一个错误但他们从来没有告诉过如何解决它。如果是这种情况,我能做些什么吗?

代码如下:

    void ComboOrder() {
    if (comboIndex == 1)
    {
            if (Input.GetKeyDown(KeyCode.E)) // Attack Input
            {
                Attack("Attack-1");
                comboIndex++;
            }
    } else if (comboIndex == 2) {
            if (Input.GetKeyDown(KeyCode.E)) // Attack Input
            {
                Attack("Attack-2");
                comboIndex--;
            }
    }
}

public void Attack(string attack)
{
    animator.SetTrigger(attack);
}

这里是播放器的 Animator 设置:

【问题讨论】:

  • 您能否编辑问题以将代码包含为代码 sn-p 而不是图像。这样,人们就可以更轻松地试用您的代码并提供帮助。您是否尝试将public void Attack(string attack = "") 更改为public void Attack(string attack)?我不明白为什么这会影响事情,但值得看看这是否会改变错误。您的代码中是否还有其他任何地方调用了没有指定参数的攻击函数?
  • 请显示动画设置
  • @RossGurbutt 我目前不在办公桌前,我正在使用 StackExchange 应用程序,因此无法添加 sn-ps,但我一到家就会通知您。我现在确实记得您提到过它,这是调用该函数的另一个实例,但是我不确定它是否传递了任何参数。警告指向这条线,所以我认为问题就在这里。
  • @BugFinder 我现在不在家,但我一到家就会添加它。
  • @RossGurbutt 我尝试了您的建议,将public void Attack(string attack = "") 替换为public void Attack(string attack),但没有任何区别。经过进一步调查,我意识到只有在播放第一个动画“Attack-1”时才会发出警告,第二个动画没有给出错误或警告。

标签: c# unity3d animation game-development


【解决方案1】:

所以大约两周没玩游戏后,我回来仔细看了一下,发现就是你说的,有一个动画事件调用了这个函数,没有传递参数,因为它是没有编码,我从来没有抓住它。感谢所有帮助过的人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-25
    • 2013-01-31
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多