📜  GDscript中的类(1)

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

GDscript中的类

简介

GDscript是一种强类型的脚本语言,它针对Godot游戏引擎进行了优化,是Godot的默认脚本语言。在GDscript中定义类(Class)是编写程序的基本方式。

基本结构

定义一个类的基本格式如下:

class MyClass:
    var variable: int
    
    func _init():
        variable = 0
        
    func my_function(argument: int) -> void:
        variable += argument
  • class关键字表示定义一个类,MyClass是类的名称。
  • var关键字定义类的属性(属性也被称为成员变量、域、字段等),variable是属性的名称,int表示变量的类型。
  • _init()函数是类的构造函数,它在类被创建时自动调用。在这个函数中,可以对类的属性进行初始化。
  • my_function()是类的方法(方法也被称为成员函数、函数等)。此处指定了一个参数argument,参数也可以是类的属性。-> void 表示该函数没有返回值。
继承

GDscript中的类支持继承。通过继承,子类可以继承父类的属性和方法,并添加自己的属性和方法。下面是一个简单的继承示例:

class Parent:
    var parent_prop: int
    
    func parent_method():
        print("Parent method")
        
class Child extends Parent:
    var child_prop: int
    
    func child_method():
        print("Child method")

这里定义了两个类,Parent和Child。Child通过extends关键字继承自Parent。Child类有自己的属性child_prop和方法child_method(),同时还继承了Parent类的属性parent_prop和方法parent_method()。

多态

在GDscript中,虽然没有像传统面向对象语言(如Java和C#)中那样的接口和抽象类概念,但是支持多态。下面是一个简单的多态示例:

class Shape:
    func area():
        pass
        
class Square extends Shape:
    var side: int
    
    func _init(s: int):
        side = s
        
    func area() -> int:
        return side * side
        
class Circle extends Shape:
    var radius: int
    
    func _init(r: int):
        radius = r
        
    func area() -> float:
        return 3.14 * radius ** 2

这里定义了一个Shape类,下面定义了两个子类Square和Circle,它们都覆盖了Shape类的area()方法,但是返回值类型和参数都不同。这就是多态的体现,同样的方法名在不同的子类中可以有不同的实现。

总结

本文介绍了GDscript中的类、继承和多态,这些是面向对象编程中的基本概念,对于编写Godot游戏引擎的程序员来说是必不可少的知识点。通过使用类,程序员可以更加灵活地构建游戏的逻辑和结构。