They aren't technically GameObjects, but are attached to GameObjects, and all GameObjects have by default a Transform. So, what you could do, in scripting, is to use a Transform's method called GetChild(index), receives an index of the child you want to retreive. Now, you may have the parents' references as Canvas, Image, etc., but all Components have a reference to their GameObject and Transform, so you can easily call that method:
public class Example : MonoBehaviour
{
Image imageChild;
void Awake()
{
imageChild = transform.GetChild(2).GetComponent<Image>(); /// Give me the third child, and give me its Image component
}
}
If what you want is to retreive all the components in your children, then GetComponentsInChildren is what you are looking for:
public class Example : MonoBehaviour
{
public Sprite spriteToAssign;
void Awake()
{
Image[] childrenImages = GetComponentsInChildren<Image>();
foreach(Image childImage in childrenImages)
{
childImage.sprite = spriteToAssign;
}
}
}
A way more easier and fast approach, would be to also have a public collection (array or list) of Images, and you assign them on the Inspector. As easy as this:
public class Example : MonoBehaviour
{
public Image[] childImages;
public Sprite spriteToAssign;
void Start()
{
foreach(Image image in childImages)
{
image.sprite = spriteToAssign;
}
}
}
Hope it helps.