📅  最后修改于: 2023-12-03 15:24:03.751000             🧑  作者: Mango
在 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
类,它具有 name
和 health
属性,以及一个 takeDamage
方法。我们使用 constructor
关键字指定了创建实例时要传入的参数,并在其中设置了属性的初始值。
然后,我们通过 new
关键字创建了一个 Player
类型的实例,并将其存储在 player
变量中。我们通过调用 takeDamage
方法来减少其 health
属性,并检查在其生命值降至零时是否会输出一条消息。
使用上面的示例是很有帮助的,但在实际的 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
的类,添加了 name
和 health
属性以及一个名为 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
类型的实例。