您当前的位置: 首页 > 

开发游戏的老王

暂无认证

  • 3浏览

    0关注

    803博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

GDScript:关于派生类调用基类方法的一个注意事项

开发游戏的老王 发布时间:2020-01-07 20:16:07 ,浏览量:3

  • 对于普通方法,在派生类中用"."+"方法名"的方式调用基类的方法,例如:

在基类中定义了一个do_something方法

#基类
func do_something():
	print("parent:do something")

在子类中调用它:

func a_function_in_child():
	.do_something()
  • 对于_init以及_ready还有_enter_tree这样的默认方法是不需要像上面那样显示调用的,例如:

基类

extends Node
class_name ParentClass
func _ready():
	print("_ready in parent")
func _enter_tree():
	print("_enter_tree in parent")
func _exit_tree():
	print("_exit_tree in parent")

派生类

extends ParentClass

func _ready():
	pass # Replace with function body.
func _enter_tree():
	pass
func _exit_tree():
	pass

运行结果

_enter_tree in parent
_ready in parent
这意味着基类的默认方法方法无论如何都要执行,且无法覆盖的

下面试一下如果在派生类的 默认方法中显式调用一下基类的默认方法

extends ParentClass

func _ready():
	._ready()

func _enter_tree():
	._enter_tree()

func _exit_tree():
	._exit_tree()

输出结果

_enter_tree in parent
_enter_tree in parent
_ready in parent
_ready in parent

基类中的 每个默认方法执行了两遍

小结 这种形式不统一的设计稍稍有些怪异,使用时一定要注意

关注
打赏
1656935939
查看更多评论
立即登录/注册

微信扫码登录

0.0471s