Прикрепить Child of Prefab к общедоступной переменной или Получить доступ к Child of Prefab - PullRequest
0 голосов
/ 30 января 2019

Новый редактор Unity (2018.3) Введены вложенные префабы.Кто-нибудь знает, как назначить потомка префаба для публичной переменной?

Например:

У меня есть веревка с родительским GameObject, и ребенок находится на всех суставах.

Я хочу получить доступ к жесткому телу одного из суставов, поэтому я установил общедоступный игровой объект для доступа к нему, но я могу выбрать только родительский объект вместо дочернего или суставного.

Кто-нибудь знаеткак, или есть ли способ получить доступ к дочернему объекту префаба?

Например: мой код выглядит следующим образом

   public GameObject player;
   Rigidbody2D rb;

void Start()
{
    player = GameObject.FindGameObjectWithTag("Player");
    rb = player.GetComponent<Rigidbody2D>();
    Debug.Log(player.name);
}

я пытаюсь получить доступ к вложенному префабу, который народительский игровой объект с вышеуказанным кодом, но я получаю исключение Null Reference.Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 02 февраля 2019

Итак, я понял, что мне нужно по-разному относиться к игровым объектам и компонентам (глупый я), поэтому я настроил код, как показано ниже, и смог схватить потомка префаба

  void Start()
{
    checkSleeping = false;
    joint = player.transform.Find("Joint 0").gameObject;
    jointRB = joint.GetComponent<Rigidbody2D>();
    Debug.Log("Found Him");
}
0 голосов
/ 31 января 2019

Я не знаю, понял ли я вопрос вообще, но думаю, что смогу вам чем-то помочь.Если вы хотите получить доступ к Child в компонентах GameObject или Joints, есть способ сделать это в здесь .

Также будьте осторожны, так как то, что вы запросили, не является GameObjectGameObject [], это массив всех GameObjects, у которых их тег совпадает.Убедитесь, что ваш тег GameObject соответствует тому, о чем вы просите, и превратите GameObject в массив и запросите первый.

GameObject[] player = GameObject.FindGameObjectsWithTag("Player");
rb = player[0].transform.GetComponent<RigidBody>();

Надеюсь, это помогло.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...