Страница 1 из 1

проблема с циклом

СообщениеДобавлено: 03 мар 2019, 15:27
NeProUser
Здравствуйте! Сегодня столкнулся с проблемой ( при Attacktimer равном нулю unity зависает) - предполагаю что это бесконечный цикл, но если так то я не смог обнаружить проблемный момент.
помогите понять в чем проблема

Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class FractionControl : MonoBehaviour
{
    public GameObject[] Troopers;
    public float AttackTimer;
    public float AtAttackTimer;
    public int reserve;
    public GameObject[] TROOPERSTIPE;
    private int Need;

    void Update()
    {
        if(AttackTimer< 0)
        {
            if (AtAttackTimer > 0)
            {
                for (int i = 0; i < Troopers.Length;)
                {
                    Troopers[i].GetComponent<Man>().isFractionAttack = true;
                }
                AtAttackTimer -= Time.deltaTime;
            }
            else
            {
                for(int i = 0; i < Troopers.Length;)
                {
                    Troopers[i].GetComponent<Man>().isFractionAttack = false;
                    i++;
                    AttackTimer = 600;
                }
            }
        }
        else
        {
            AttackTimer -= Time.deltaTime;
            for(int i = 0; i < Troopers.Length; i++)
            {
                if (Troopers[i] == null)
                {
                    Need += 1;
                }
                if(i == Troopers.Length)
                {
                    for(int n = 0;n< Need;)
                    {
                        int Rnd = Random.Range(1, 3);
                        Instantiate(TROOPERSTIPE[Rnd], gameObject.transform.position, Quaternion.identity);
                        i++;
                    }
                }
            }
        }
    }
}
 

Re: проблема с циклом

СообщениеДобавлено: 03 мар 2019, 18:02
1max1
Зависает скорей всего здесь:
Синтаксис:
Используется csharp
for (int n = 0; n < Need;)...

n всегда будет 0 и соответственно цикл бесконечный до тех пор пока n < Need.

Re: проблема с циклом

СообщениеДобавлено: 03 мар 2019, 19:01
NeProUser
Спасибо за ответ, он очень помог! однако,проблем было две : первую назвали вы, а вторая была аналогична ей только с самым первым циклом - i всегда равнялась нулю
Было:
Синтаксис:
Используется csharp
for (int i = 0; i < Troopers.Length;)
                {
                    Troopers[i].GetComponent<Man>().isFractionAttack = true;
                 
                }
                AtAttackTimer -= Time.deltaTime;


стало:
Синтаксис:
Используется csharp
for (int i = 0; i < Troopers.Length;)
                {
                    Troopers[i].GetComponent<Man>().isFractionAttack = true;
                  i++;
                }
                AtAttackTimer -= Time.deltaTime;