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

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

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

Сообщение NeProUser 03 мар 2019, 15:27

Здравствуйте! Сегодня столкнулся с проблемой ( при 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++;
                    }
                }
            }
        }
    }
}
 
Очередной новичок
Аватара пользователя
NeProUser
UNIт
 
Сообщения: 121
Зарегистрирован: 29 апр 2018, 20:22

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

Сообщение 1max1 03 мар 2019, 18:02

Зависает скорей всего здесь:
Синтаксис:
Используется csharp
for (int n = 0; n < Need;)...

n всегда будет 0 и соответственно цикл бесконечный до тех пор пока n < Need.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

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

Сообщение NeProUser 03 мар 2019, 19:01

Спасибо за ответ, он очень помог! однако,проблем было две : первую назвали вы, а вторая была аналогична ей только с самым первым циклом - 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;
Очередной новичок
Аватара пользователя
NeProUser
UNIт
 
Сообщения: 121
Зарегистрирован: 29 апр 2018, 20:22


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14