📜  如何创建类 godot 的实例 - TypeScript (1)

📅  最后修改于: 2023-12-03 15:24:03.751000             🧑  作者: Mango

如何创建类 godot 的实例 - TypeScript

在 TypeScript 中,我们可以使用 class 关键字创建类的实例。对于 Godot,我们通常会使用 GDScript 编写游戏逻辑,然后将其导出到 TypeScript 中以进行更强大的类型检查和自动补全功能。

创建类的示例

让我们从一个简单的示例开始,创建一个名为 Player 的类和一个 player 的实例:

class Player {
  name: string;
  health: number;

  constructor(name: string, health: number) {
    this.name = name;
    this.health = health;
  }

  takeDamage(amount: number) {
    this.health -= amount;
    if (this.health <= 0) {
      console.log(`${this.name} has died`);
    }
  }
}

const player = new Player('Alice', 100);
player.takeDamage(50);
console.log(player.health); // 输出 50

在这个示例中,我们定义了一个 Player 类,它具有 namehealth 属性,以及一个 takeDamage 方法。我们使用 constructor 关键字指定了创建实例时要传入的参数,并在其中设置了属性的初始值。

然后,我们通过 new 关键字创建了一个 Player 类型的实例,并将其存储在 player 变量中。我们通过调用 takeDamage 方法来减少其 health 属性,并检查在其生命值降至零时是否会输出一条消息。

导出 Godot 脚本并创建实例

使用上面的示例是很有帮助的,但在实际的 Godot 项目中,我们需要将 GDScript 脚本导出为适用于 TypeScript 的模块,然后在 TypeScript 代码中使用 import 语句将其导入。

首先,让我们创建一个 GDScript 文件 player.gd,定义与我们之前 Player 类相同的 Player 类:

class_name Player

var name: String
var health: int

func _init(name: String, health: int):
    self.name = name
    self.health = health

func take_damage(amount: int) -> void:
    self.health -= amount
    if self.health <= 0:
        print(self.name + " has died")

在上述代码中,我们使用 class_name 关键字将其定义为一个名为 Player 的类,添加了 namehealth 属性以及一个名为 take_damage 的方法。

然后,我们在 Godot 中将其导出为一个 TypeScript 模块。在项目菜单栏中,依次选择 “Project”->“Export”->“Add…” ,然后选择 “TypeScript” 和 “Script” 作为资源类型。在“Script”资源中,选择“player.gd”文件并指定输出目录。

完成导出后,我们可以在 TypeScript 中使用 import 语句将其导入:

import { Player } from './player';

const player = new Player('Alice', 100);
player.takeDamage(50);
console.log(player.health); // 输出 50

在上面的代码中,我们使用 import 语句从新导出的 player.ts 模块中导入了 Player 类型。我们使用相同的方式创建 Player 类型的实例。