Практически каждый класс в годо — это класс который наследует свойства других классов.
И цепочка может быть довольно длинной, например StaticBody2D наследуется от PhysicsBody2D, тот в свою очередь от CollisionObject2D и так далее до класса Object.
У каждого класса есть свои свойства. И на самом деле когда мы создаем скрипт , по сути мы расширяем возможности текущего класса.
Например создадим скрипт на ноде StaticBody2D
Фраза extends StaticBody2D как раз и говорит нам о том, что мы расширяем класс StaticBody2D. Т.е мы можем оперировать всеми теми своиствами которые есть у этого класса + создать какие то свои.
Унаследованная сцена :
Давайте создадим спрайт и леибл. И сделаем унаследованную сцену.
Жмем на New Inherited Scene, и выбираем нашу сцену.
Это создаст новую сцену, в которой будет ровно такая же структура как и у оригинала.
Но заметно что ноды серые. Мы не можем их удалять, так как они наследуются из родительской сцены.
При этом мы можем менять их своиства (заменить спрайт на другой) , и добавить новые элементы.
Таким образом мы получаем как бы общий «скелет», который наследуется от родителя.
Соответсвенно, если мы внесем какие то изменения в «родителя», то всё это подгрузится в «детей».
Свой класс.
Свой класс создается при помощи свойства class_name.
Внутри него можно создавать подклассы при помощи class.
Давайте для примера создадим класс Weapons, внутри которого будут переменные Bullets и Power.
Теперь, открыв список нод в годо, мы сможем увидеть наш класс:
Можем использовать этот класс как наследуемый для новых нод.
Создадим Node2D, и подвесим на него новый скрипт.
Но укажем что он будет наследоваться от Weapons
И теперь в скрипте нам будут доступны переменные Bullets и Power из класса Weapons.
По итогу — наследование это один из важных аспектов разработки. Используйте эти возможности в своих проектах. Удачи !