Существует такая иерархия
canvas_main
canvas_second
ImageImage
На обоих Image висит один и тот же скрипт, как из него получить canvas_main?
Очевидно что просто transform.parent.gameObject не подходит в силу "разноуровности" элементов.
Очевидно, наимение ресурсоёмкий способ это ссылка прямо на объект.
public Transform MainParent;
Если вам этот способ не нравится, вы можете найти по тегу или названию.
Все GameObject обязаны иметь компонент Transform, а у всех классов наследников MonoBehaivior есть метод GetComponentsInParent(). Который вернёт все компоненты данного типа, которые найдёт идя вверх по списку.
Могу, конечно, ошибиться, но этот метод при вызове .GetComponentsInParent() вернёт вам массив из трансформов, в котором последним элементом будет самый верхний трансформ. Как следствие из него вы можете получить объект через .gameObject
Если над canvas_main нет других объектов, то можно же просто transform.root использовать
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости