Godot 3.3
在关于 Godot 的角色场景的开发中,如果角色的功能并不复杂时,我们可以不那么注意 Godot 场景的设计,而当项目越来越大,场景的节点越来越多,一个场景中的功能越来越多时,我们的场景、代码的量与代码逻辑变得越来越复杂。这个时候,应当对 Godot 每个节点和脚本进行分类与设计。
比如我们要设计一个复杂的角色,首选要对他的功能进行一个分类,例如我对一个角色节点的分类。
这样不至于一个节点中的功能过多,代码过多,TypeLayer
节点负责做 每层节点的中转站,处理器。根节点(Player
节点)用于对外直接调用方法的一个节点。
比如 Controller
节点的一个控制器需要对节点进行移动,或其他动作的操作,那么就连接发出的信号到这个 TypeLayer
节点上,判断与处理,之后调用其中的 Canvas
层进行播放移动动画,进行动画处理,然后调用 父节点(KinematicBody2D
类型节点)的 move_and_slide
方法进行移动等操作。
又比如 Collision
碰撞处理层 节点,这一层主要判断碰撞相关, Area2D
的 body_entered
信号是连接到 Collision
节点上的,如果 Area2D
发现了敌人(这个区域的作用看你自己如何去定义了,我是做为发现敌而添加的),那么 Collision
会发出一个自定义的信号 found_enemy
(发现敌人)的信号,并且这信号连接到 TypeLayer
节点的一个方法上,然后由 TypeLayer
进行处理,调用 Controller
中的控制的方法。
这样做下来,整个场景的节点、逻辑清晰,且方便管理与扩展,每个分类节点下的子节点也可以继续向下一直分类。
也许你有能好的思路,那也欢迎提出你的想法,在评论区交流。