I do not think there is a way to extend a scene where it inherits the base properties in Godot, not that I'm aware of.
That said, you can use script inheritance though to work around things like variable changes. Additionally, if you are okay with using scripting to connect signals, they should also be inherited and work as long as the node names are consistent.
You just need to use something like this, if I recall correctly (untested):
extends Node
class_name base_class
export var health = 10;
func _ready():
# The reason we use a function for this is because if we have a _ready
# function in the child script, it will override the _ready function
# in this script. To work around this, we'll just use another function.
# (this won't be an issue in GDScript in Godot 4.0)
_base_setup()
func _base_setup():
print ("health is: ", health)
# connect signals example
$Button.connect("pressed", this, "on_button_pressed")
func on_button_pressed():
print ("Button pressed!")
Then in the child script:
extends base_class
export var speed = 10
func _ready():
_base_setup();
print ("speed is: ", speed)
It's not quite as UI friendly as Unity's prefab system, but it should work with a little tinkering. :smile: