无法让我的 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
语句中
我无法让 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
语句中