无法让我的 for 循环工作

can't get my for loop to work

我无法让 for 循环正常工作。我可以让它工作一次,或者没有限制。我正在尝试让硬币最多实例化 3 次。我不认为 for 循环本身是错误的,但某处的结构是错误的。循环在 Looted 函数中。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class corpseKicked : MonoBehaviour {

private Rigidbody2D rb;
private Animator anim;
public GameObject coinPrefab;
public Transform coinSpawn;
private bool kicked = false;
public float timer = 2f;
public GameObject deathFlamePrefab;
private bool flamer;
private bool pay = false;
private bool broke = false;

void Start ()
{
    anim = GetComponent<Animator> ();
    rb = GetComponent<Rigidbody2D> ();
}

// Update is called once per frame
void Update ()
{
    Looted ();
}

public void OnTriggerEnter2D(Collider2D other)
{
    if (!kicked && other.gameObject.tag == "kickIndicator") {
        kicked = true;
        transform.Translate (0.0f, .05f, 0.0f);
    }
}

public void Looted ()
{
    if (!pay && kicked) {

        pay = true;
        Instantiate (coinPrefab, coinSpawn.position, coinSpawn.rotation);
        kicked = false;
        pay = false;
        for (int i = 1; i <= 3; i++)

            Debug.Log ("$$$$$$$$$");
    }
}

试试这个:

public void Looted ()
{
    if (!pay && kicked) {

        pay = true;
        Instantiate (coinPrefab, coinSpawn.position, coinSpawn.rotation);
        kicked = false;
        pay = false;
        for (int i = 1; i <= 3; i++)
        {    
            Debug.Log ("$$$$$$$$$");
        }
    }
}

查看 for 条件中的差异。将其视为 "do this loop as long as this condition is true." 因为 i 从 1 开始并在语句 i++ 的末尾递增,这将是您预期的 运行 三倍。

虽然说

更常见和惯用
for (int i = 0; i < 3, i++)

除非有特殊原因需要从 1 开始计数。

public GameObject deathFlamePrefab;
private bool flamer;
private bool pay = false;
private bool broke = false;
private int kickedCount = 0;

void Start ()
{
    anim = GetComponent<Animator> ();
    rb = GetComponent<Rigidbody2D> ();
}

// Update is called once per frame
void Update ()
{
    Looted ();
}

public void OnTriggerEnter2D(Collider2D other)
{
    if (!kicked && other.gameObject.tag == "kickIndicator") {
        kicked = true;
        transform.Translate (0.0f, .05f, 0.0f);
    }
}

public void Looted ()
{
    if (!pay && kicked) {

        pay = true;

        kicked = false;

        if (kickedCount < 3)
        {
           Instantiate (coinPrefab, coinSpawn.position, coinSpawn.rotation);
           kickedCount++;
        }
        pay = false;
    }
}

不确定 pay 的作用,但您可能需要将其放在 if 语句中