Defold核心概念之Building Blocks

在前面讲为什么选择Defold时,也提到过它的层次结构非常清晰,所以学习入门起来比较容易。这一次呢再详细的讲一下层次结构也是Building Blocks这个核心概念。

讲到Building Blocks,还是请来自于Defold官方的老演员出场,下图所示:

从上图可知,Defold的层次结构中主要有三种,分别是Collection、Game Object、Component。它的嵌套关系是Collection可以包含其他的Collection与Game Object,Game Object可以包含Component。简单举例说明一下这三位分别代表什么。

  1. Collection 在游戏中经常用于表示一个关卡,或多个Game Object对象的组合,比如:某个角色Game Object 与 某个武器Game Object的组合也可以被做为一个Collection。
  2. Game Object 在游戏中表示一个实际存在的,有位置、可缩放、可旋转、可移动的对象,比如:子弹、角色、游戏奖励等。
  3. Component 在游戏中用于丰富Game Object的行为,如果没有Component,那么Game Object是不可见的,也不会有任何逻辑,因为Game Object需要Component来给它添加相关可视化的东西与脚本等等。可以说,没有Component的Game Object就是一个空的架子,没有什么实际的意义。

Collection

通常情况下,项目中的main/main.collection集合文件会做为游戏的入口。当然,也可以在game.project配置文件中修改游戏入口的Collection。

如上图所示,在一个默认的Collection中就包含的其他的Collection与Game Object,这是一个最简单也最典型的层次结构。

Game Object

Game Object对象都有自己的生命周期,从init -> update -> final ,为整个完整的生命周期,如果需要在Game Object的生命周期中添加游戏的逻辑,那么就需要添加script脚本这种Component到Game Object中。Game Object有自己的位置、大小等,都可以通过函数进行处理,比如最常用的是给Game Object添加动画效果。如下所示:

lua 复制代码
go.animate("game_object_id", "position", go.PLAYBACK_LOOP_PINGPONG, new_position, go.EASING_LINEAR, 1.0)

Component

游戏中的绝大多数逻辑都在Component中,无论是可视化控制、可听相关控制、或脚本逻辑都在Component中完成。Component包含于Game Object中,但是Component控制Game Object的所有行为与外观。Component的所有属性都可以通过脚本直接修改。

最后一次讲层级关系

  1. Collection包含Collection与Game Object。
  2. Game Object包含Component。
  3. 子级元素默认在父级的坐标空间内,而且受父级的位置、大小、角度等影响。
  4. Game Object可通过set_parent消息,动态修改父级。
  5. 无论在运行时如何修改父级,Game Object的ID定位不会发生变化。
相关推荐
SmalBox1 天前
【节点】[Filter-Dither节点]原理解析与实际应用
unity3d·游戏开发·图形学
龚子亦2 天前
【GameFramework框架学习】事件系统的使用
学习·游戏开发·游戏框架
龚子亦2 天前
【GameFramework框架】FSM使用
学习·unity·游戏开发·游戏框架
SmalBox2 天前
【节点】[Blend节点]原理解析与实际应用
unity3d·游戏开发·图形学
SmalBox3 天前
【节点】[GammaToLinearSpaceExact节点]原理解析与实际应用
unity3d·游戏开发·图形学
_大学牲3 天前
Flutter 勇闯2D像素游戏之路(四):与哥布林战斗的滑步魔法师
flutter·游戏·游戏开发
SmalBox4 天前
【节点】[LinearToGammaSpaceExact节点]原理解析与实际应用
unity3d·游戏开发·图形学
技术小甜甜5 天前
[Godot] 解决导出APK安装失败的常见问题:深入分析与调试方法
游戏引擎·godot·游戏开发
SmalBox5 天前
【节点】[RGBtoGrayscale节点]原理解析与实际应用
unity3d·游戏开发·图形学
技术小甜甜5 天前
[Godot][入门] 安装与版本选择:3.x 还是 4.x?(按项目类型一键决策)
游戏引擎·godot·游戏开发·2d