Добавление только одного компонента к объектам.

Программирование на Юнити.

Добавление только одного компонента к объектам.

Сообщение Telephonist 08 апр 2019, 14:17

Есть лист компонентов "Doors" и проверка на движение врагов. При движении одного из них на каждую дверь должен вешаться только один collider.
Синтаксис:
Используется csharp
for (int m = 0; m < enemies.Length; m++) {
                        var obj7 = enemies [m];
                        if (obj7.GetComponent<Enemy> ().move == true) {
                                for (int p = 0; p < doors.Length; p++) {
                                        var obj3 = doors [p];
                                        obj3.AddComponent<BoxCollider2D> ();
                                }
                        }

                        if (obj7.GetComponent<Enemy>().move == false) {
                                for (int o = 0; o < doors.Length; o++) {
                                        var obj4 = doors [o];
                                        var col = obj4.GetComponent<BoxCollider2D> ();
                                        col.enabled = false;
                                }
                        }
                }

Пытался добиться этого таким кодом, но при движении врага на двери вешается бесконечное количество colliderов. Помогите найти ошибку. Заранее спасибо! [curved_hands]
Telephonist
UNец
 
Сообщения: 24
Зарегистрирован: 08 апр 2019, 14:05

Re: Добавление только одного компонента к объектам.

Сообщение 1max1 08 апр 2019, 14:23

Синтаксис:
Используется csharp
if (obj3.GetComponent<BoxCollider2D>() == null)
    // add

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

Re: Добавление только одного компонента к объектам.

Сообщение Telephonist 08 апр 2019, 14:32

1max1 писал(а):
Синтаксис:
Используется csharp
if (obj3.GetComponent<BoxCollider2D>() == null)
    // add

А вообще, то что ты делаешь должно происходить 1 раз в старте, а не тучу раз в апдейте.


Просто двери генерируются вместе с врагами. А так это действительно было бы правильно.Спасибо, попробую.
Telephonist
UNец
 
Сообщения: 24
Зарегистрирован: 08 апр 2019, 14:05

Re: Добавление только одного компонента к объектам.

Сообщение Telephonist 08 апр 2019, 14:43

1max1 писал(а):
Синтаксис:
Используется csharp
if (obj3.GetComponent<BoxCollider2D>() == null)
    // add

А вообще, то что ты делаешь должно происходить 1 раз в старте, а не тучу раз в апдейте.

Код работает, спасибо огромное!
Telephonist
UNец
 
Сообщения: 24
Зарегистрирован: 08 апр 2019, 14:05


Вернуться в Скрипты

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

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


cron