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

Спавн объектов

СообщениеДобавлено: 02 ноя 2018, 18:09
Grigoriy
Здравствуйте, наверное вы посчитаете это глупым вопросом, но я не могу его решить уже 2 дня(
Вобщем, у меня есть сам спавн объектов, все работает идеально все спавнится, но мне нужно чтобы все это зависило от условия, что переменная game равняется true
(Character.game == true) и если эта переменная действительно равна true то объекты спавнятся. Я попробовал поставить это условие перед корутиной, но ничего не работает(

Вот сам спавн объектов

using System.Collections;
using UnityEngine;

public class ObstacleSpawner : MonoBehaviour
{
public GameObject cubik;

void Start()
{



StartCoroutine(Spawn());


}
IEnumerator Spawn()
{


while (!Character.lose)
{




Instantiate(cubik, new Vector2(Random.Range(-336.78f, -322.37f), 45f), Quaternion.identity);
yield return new WaitForSeconds(1f);

}




}





}

Re: Спавн объектов

СообщениеДобавлено: 02 ноя 2018, 18:18
1max1
Почему так много дыр в коде?))
Синтаксис:
Используется csharp
using System.Collections;
using UnityEngine;

public class ObstacleSpawner : MonoBehaviour
{
    public GameObject cubik;

    void Start()
    {
        StartCoroutine(Spawn());
    }

    IEnumerator Spawn()
    {
        while (!Character.lose && Character.game)
        {
            Instantiate(cubik, new Vector2(Random.Range(-336.78f, -322.37f), 45f), Quaternion.identity);
            yield return new WaitForSeconds(1f);
        }
    }
}
 

Re: Спавн объектов

СообщениеДобавлено: 02 ноя 2018, 18:28
Saltant
Зачем циклом делаешь? Можно ведь добавить в метод Update() а не Start() и каждый кадр будет проверяться условие через if() и корутины не нужны.

Re: Спавн объектов

СообщениеДобавлено: 02 ноя 2018, 18:33
KanycTa
Saltant писал(а):Зачем циклом делаешь? Можно ведь добавить в метод Update() а не Start() и каждый кадр будет проверяться условие через if() и корутины не нужны.


А разница?

Re: Спавн объектов

СообщениеДобавлено: 02 ноя 2018, 20:16
Grigoriy
1max1 писал(а):Почему так много дыр в коде?))
Синтаксис:
Используется csharp
using System.Collections;
using UnityEngine;

public class ObstacleSpawner : MonoBehaviour
{
    public GameObject cubik;

    void Start()
    {
        StartCoroutine(Spawn());
    }

    IEnumerator Spawn()
    {
        while (!Character.lose && Character.game)
        {
            Instantiate(cubik, new Vector2(Random.Range(-336.78f, -322.37f), 45f), Quaternion.identity);
            yield return new WaitForSeconds(1f);
        }
    }
}
 


постоянно что-то дописываю, потом удаляю)

Re: Спавн объектов

СообщениеДобавлено: 02 ноя 2018, 20:26
Grigoriy
1max1 писал(а):Почему так много дыр в коде?))
Синтаксис:
Используется csharp
using System.Collections;
using UnityEngine;

public class ObstacleSpawner : MonoBehaviour
{
    public GameObject cubik;

    void Start()
    {
        StartCoroutine(Spawn());
    }

    IEnumerator Spawn()
    {
        while (!Character.lose && Character.game)
        {
            Instantiate(cubik, new Vector2(Random.Range(-336.78f, -322.37f), 45f), Quaternion.identity);
            yield return new WaitForSeconds(1f);
        }
    }
}
 

я сделал как вы написали, но все равно не работает, если написать что при game == false выполняется спавн объектов, то все работает, а при true почему то не хочет. Кстати такое же условие я прописал для вывода очков на экран ( при game = true) и все работает, а со спавном нет

Re: Спавн объектов

СообщениеДобавлено: 02 ноя 2018, 20:29
DimaJoke
А зачем IEnumerator? Сделай
Синтаксис:
Используется csharp
void Start()
{
//bla bla bla
Spawn();
}
void Spawn()
{
//Чототам
}
 

А лучше даже Spawn() вызывать через Update()
Или вообще всё перенести в Update()
Или я не догоняю :-?

Re: Спавн объектов

СообщениеДобавлено: 02 ноя 2018, 22:23
1max1
при game == false выполняется спавн объектов

Это не возможно, в условии game должен быть тру. Возможно где-то висит лишний скрипт.

Re: Спавн объектов

СообщениеДобавлено: 02 ноя 2018, 23:30
Saltant
KanycTa писал(а):
Saltant писал(а):Зачем циклом делаешь? Можно ведь добавить в метод Update() а не Start() и каждый кадр будет проверяться условие через if() и корутины не нужны.


А разница?

Зачем усложнять технически код когда можно написать не усложняя? Это же юнити, пользуйтесь тем что уже сделано для пользователя, не голый же си-шарп юзаете. Разница на таком этапе будет не видна, но если брать большой проект, тут уже начнутся головные боли от различных корутин, нумераторов, циклов и т.п когда это (то что привел ТС хотя бы) делается через if в update. Не ну, программирование конечно это творчество, каждый пишет кто как видит, остальное приходит с опытом.