Unity C#-重新加载脚本无法正常工作

Unity C#-重新加载脚本无法正常工作,c#,unity3d,reload,gun,C#,Unity3d,Reload,Gun,所以这个脚本应该在杂志间切换,而不是填满杂志。发生的是第一次重新加载,即使动画发生了,一切都发生了。弹匣只有在你射击并重新装弹后才会改变。重新加载将在4个弹匣中的2个弹匣之间切换,即使2个弹匣是空的(这是预期的,因为如果弹匣中有子弹,它可以切换) 代码如下: if (Input.GetAxis ("Reload") > 0 && reloading == false && pressedReload == false && runningAu

所以这个脚本应该在杂志间切换,而不是填满杂志。发生的是第一次重新加载,即使动画发生了,一切都发生了。弹匣只有在你射击并重新装弹后才会改变。重新加载将在4个弹匣中的2个弹匣之间切换,即使2个弹匣是空的(这是预期的,因为如果弹匣中有子弹,它可以切换)

代码如下:

if (Input.GetAxis ("Reload") > 0 && reloading == false && pressedReload == false && runningAutomatic == false && mags[currMag] < magazineSize && animator.GetCurrentAnimatorStateInfo (0).IsName (shootAnim.name) == false) {
    for (int i = 0; i < mags.Length; i++) {

        if (mags [i] > 0) {
            Reload (currMag + 1);
            animator.SetFloat ("ReloadSpeed", reloadSpeed);
            animator.Play (reloadAnim.name);
            pressedReload = true;
            reloading = true;
        }
    }
}
reloading = animator.GetCurrentAnimatorStateInfo (0).IsName (reloadAnim.name);
    if (reloading)
        pressedReload = false;

只是忘记了打破for循环。。。多亏了:D

作为旁注,我认为您在确定可以重新加载的杂志后忘记了将从for循环中断开-在当前状态下,它将为每个非空杂志执行条件代码,即使已经选择了一个来重新加载。哈哈,谢谢,这修复了它。不知何故,我忘记了for循环完全在一帧中播放:P
void Reload (int currentMagazine) {

    if (currentMagazine == mags.Length)
    currentMagazine = 0;
    currMag = currentMagazine;
}