我有以下功能来管理游戏中我的玩家枪的重装过程。我从AmmoCheck函数调用该函数并运行,但if语句永远不会运行,因为输入没有被检测到。这一行:
Debug.Log("重新加载功能检查");
将打印到控制台,但没有更进一步。
我确保在编辑>项目设置>输入下设置了输入,并将其设置为r按钮。 (证明 - http://i.imgur.com/u2aVNpU.png)
功能:
void gunReload()
{
Debug.Log("Reload function check");
if (Input.GetButtonDown("Reload")) {
Debug.Log("Reloading");
if(changeWeapon.currentGun == changeWeapon.gunPistol) {
aReload.SetActive(false);
// Incrementing the aClipPistolCurrent value by 1 so the current clip "should" progress one along? idk
aClipPistolCurrent += 1;
}
if(changeWeapon.currentGun == changeWeapon.gunAssault) {
aReload.SetActive(false);
// Incrementing the aClipPistolCurrent value by 1 so the current clip "should" progress one along? idk
aClipAssaultCurrent += 1;
}
}
}
函数调用gunReload();
在Update()
中调用gunAmmoCheck()void gunAmmoCheck()
{
if(changeWeapon.currentGun == changeWeapon.gunPistol && aClipPistol[aClipPistolCurrent] > 0) {
gunFire ();
// Reducing the ammo of the current clip by 1.
// ClipPistol is being used (say array, why array
aClipPistol[aClipPistolCurrent] -= 1;
}
if(changeWeapon.currentGun == changeWeapon.gunAssault && aClipAssault[aClipAssaultCurrent] > 0) {
gunFire ();
// Reducing the ammo of the current clip by 1.
// ClipPistol is being used (say array, why array
aClipAssault[aClipAssaultCurrent] -= 1;
}
if(aClipPistol[aClipPistolCurrent] == 0)
{
Debug.Log ("Reload");
// Activating the reload notification on the interface
aReload.SetActive(true);
gunReload();
}
if(aClipAssault[aClipAssaultCurrent] == 0)
{
Debug.Log ("Reload");
// Activating the reload notification on the interface
aReload.SetActive(true);
noAmmo = true;
gunReload();
}
}
我在这里不知所措,因为我的所有其他输入工作都完美无瑕。任何帮助将不胜感激。
答案 0 :(得分:1)
我刚试过这个并且它有效。我开始认为问题出在你调用函数的地方。还不确定但是
让我们慢慢找到问题。你能否在功能中注释掉那些东西并且只有
void gunReload ()
{
//Debug.Log ("Reload function check");
if (Input.GetButtonDown ("Reload")) {
Debug.Log ("Reloading");
}
}
你的代码中的。然后从更新中调用 gunReload()并告诉我它是否有效。 从你来调用 gunReload()的函数也是一件好事。