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

Доступ к children

СообщениеДобавлено: 28 фев 2021, 17:58
labinzevvAlex
Всем привет. Такой вопрос:
Есть GameObject, на нем висит скрипт "S", в скрипте есть переменная public GameObject obj в которую добавлен объект "A" со сцены. При запуске проекта, к объекту "A" в children добавляется один из заспавненных(может быть любым) объектов "В" (при нажатии клавиши на клавиатуре). Так вот, каким образом можно получить доступ к объекту "В" из скрипта "S", чтобы можно было изменить его свойства из созданного мной метода в скрипте "S"?

Re: Доступ к children

СообщениеДобавлено: 28 фев 2021, 18:06
~AvA~
Варинтов может быть несколько..
Достаточно простым будет, что-то типа
obj.GetComponent<Trnasform>().GetChild(0) <- если B первый "ребёнок"

Re: Доступ к children

СообщениеДобавлено: 28 фев 2021, 18:17
labinzevvAlex
~AvA~ писал(а):Варинтов может быть несколько..
Достаточно простым будет, что-то типа
obj.GetComponent<Trnasform>().GetChild(0) <- если B первый "ребёнок"


Пробовал этот вариант, но 1)до попадания объекта "В" в children, постоянно выдаёт ошибку отсутствия children 2) При таком поиске он цепляет в public GameObject не children а сам объект "А"

Ещё пробовал циклом for искать по тегу, но здесь не получается, потому что нужно указывать конкретный индекс объекта в массиве, например [0] а объектов в массив куча набивается, и угадать какой из них children не получится. А работать со всеми объектами в массиве из другого метода, на сколько я знаю нельзя (если всё таки можно, то это бы решило проблему).

Так же вариант с foreach - он находит этот объект "В" (выводит лог с его именем), а вот как дальше его из цикла получить - не знаю может кто подскажет?

Re: Доступ к children

СообщениеДобавлено: 28 фев 2021, 20:17
~AvA~
Синтаксис:
Используется csharp
using UnityEngine;

public class TestScript : MonoBehaviour
{
    public Transform A;

    private void Update()
    {
        if (A.childCount == 0)
            return;
       
        Debug.Log(A.GetChild(0).name);
    }
}
 


Решил что проще написать код, чем пытаться объесянить )
Единственное, что изменил - это A ссылка на трансформ

Re: Доступ к children

СообщениеДобавлено: 28 фев 2021, 20:51
labinzevvAlex
~AvA~ писал(а):
Синтаксис:
Используется csharp
using UnityEngine;

public class TestScript : MonoBehaviour
{
    public Transform A;

    private void Update()
    {
        if (A.childCount == 0)
            return;
       
        Debug.Log(A.GetChild(0).name);
    }
}
 


Решил что проще написать код, чем пытаться объесянить )
Единственное, что изменил - это A ссылка на трансформ


Можно немного подробнее, с чем вместе работает? Может быть ты прекратишь мои мучения:) А то уже голова от этой темы распухла...

Решено! Единственное, что изменил, if (A.childCount == 1) сменил 0 на 1 (детей у объекта 1) и добавил проверку if (A) во избежании ошибки при откреплении объекта из детей. Спасибо за помощь!