【发布时间】: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