Targeting parts of a Prefab more than 1 level down?


I am trying to target part of a Prefab in one of my scripts. When I view the Prefab in the Project Explorer, I can “open” it to see one layer beneath, and I can click&drag these items to the inspector for use in my scripts.

For some reason, I cannot target more than 1 level down. Is this expected behavior? I tried to solve this problem programmatically, by using a GetComponentInChildren() call on one of the items that I CAN see in the project explorer, but it is returning null.

Please advise, thanks so much!

You may want to consider a recursive or nested call which checks & essentially sums each child’s components. Something like this rather inefficient extension method:

public static class MonobehaviourExtensions
{   public static T[] GetComponentsInChildrenRecursive<T> (this MonoBehaviour mb) where T: UnityEngine.MonoBehaviour
        System.Collections.Generic.List<T> components = new System.Collections.Generic.List<T> ();
        components.AddRange (mb.gameObject.GetComponents<T> ());
        for(int i=0; i < mb.transform.childCount;i++){
            components.AddRange(GetComponentsInChildrenRecursive<T> (mb));
        return components.ToArray();