GameObject
Базовый кирпичик Unity: пустой контейнер с позицией, который становится чем-то осмысленным, только когда к нему добавляют компоненты.
Всё на сцене Unity — игрок, камера, источник света, невидимая триггер-зона — это объекты одного и того же типа. Сам по себе он почти ничего не делает: у него есть имя, тег, слой и обязательный Transform. Поведение даётся навешенными компонентами, а сами объекты вкладываются в иерархию, где потомки движутся вместе с родителем. Архитектура предпочитает композицию наследованию, поэтому префаб может быть буквально чем угодно.
Две классические ловушки: GetComponent и Find дороги, если вызывать их каждый кадр, а Unity перегружает == так, что уничтоженный объект равен null, хотя C#-ссылка ещё жива. Этот «fake null» заставил не одного разработчика усомниться в собственном рассудке.