Godot-实例化

简介

现在想象自己是一名厨师,你正在做一道家常菜——番茄炒鸡蛋。在从冰箱取出番茄和鸡蛋以后,会按照如下的步骤:

  1. 将鸡蛋打到碗里,加盐加醋,搅拌均匀以后,放到加热的油锅中翻炒,鸡蛋炒香之后倒出到碗里备用

  2. 把切好的西红柿导入锅中翻炒,加调料加盐加水炒一会儿

  3. 最后将煎好的鸡蛋下锅翻炒几下即可出锅装盘

在做番茄炒鸡蛋的过程中,你并不是直接把番茄和鸡蛋丢锅里一起炒,而是先把鸡蛋炒香之后放到碗里备用,等需要的时候再加入。

做游戏的过程与之类似,你可以把整个项目分解成任意多个小的场景,先把每个小场景的功能做好,最后根据需要再拼成一个大场景。

创建好的场景保存到硬盘上,其文件名的后缀是 .tscn 代表了 “text scene”。这些文件被称为 “Packed Scenes” 因为它们包含了这个场景的所有信息。(还记得上一节 Godot-场景 中讲到的,场景其实就是一系列以树状形式组织的节点。)

在保存场景以后,它就可以作为蓝图被使用了:你可以在其他的场景中任意多次使用它。这种从一个模板中复制物体的方式就成为 实例化

例子

以球为例,它包含了一个名为 Ball 的 RigidBody2D ,它允许球体可以像刚体一样自由落地和在墙壁间弹跳,同时包含两个子节点,SpriteCollisionShape2D

接着在主场景中,就可以 实例化 刚才的球的场景了,就像是蓝图一样。被实例化的场景表现起来与节点并无二致。编辑器会自动隐藏它的组成成分,因此只能看到这个节点本身。注意到每个节点都有其唯一的名称。

即使每个 Ball 的示例都拥有相同的结构和属性,正如在 Ball.tcsn 中定义的那样,你仍然可以单独修改每个实例的属性,例如它的弹性系数、重量等。

要了解实例化如何工作,最好的方法是自己在 Godot 上操作一番,官网有很详细的操作指引,这里就不赘述了。https://docs.godotengine.org/zh_CN/latest/getting_started/step_by_step/instancing.html#instancing-by-example

最后更新于