📜  godot 中的导出列表 (1)

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

Godot中的导出列表

Godot是一个开源的、跨平台的游戏引擎,它采用了一种基于节点图的编程方法,使得它的操作变得非常简单。在Godot中,导出列表可以帮助你将内部变量导出给其他类或编辑器。本文将对Godot中的导出列表作一个详细的介绍。

什么是导出列表?

在Godot中,导出列表是一种将节点或资源的内部变量暴露给其他类或编辑器的机制,这样就可以在其他类中访问到这些变量,并且可以在编辑器中进行相应的修改。导出列表使用@export装饰器来声明。

以下是一个使用导出列表的例子:

from godot import *

class MyNode(Node2D):

    @export(float) # 将变量speed导出为浮点数类型
    var speed = 10.0

在上面的例子中,我们使用@export装饰器将speed变量导出为浮点数类型。这样,在其他类中就可以使用MyNode.speed来访问这个变量,并且可以在编辑器中修改它的值。

导出列表中支持的数据类型

Godot中导出列表支持以下数据类型:

  • 布尔型:bool
  • 整型:int
  • 浮点型:float
  • 字符串型:String
  • 路径类型:NodePath
  • 资源类型:Resource
  • 类型:Type
  • 枚举类型:int, Enum

以下是一个包含所有支持的数据类型的例子:

from godot import *

class MyNode(Node2D):

    @export(bool)
    var b = True

    @export(int)
    var i = 10

    @export(float)
    var f = 3.14

    @export(String)
    var s = 'Hello, Godot!'

    @export(NodePath)
    var path = NodePath('MainScene/MySprite')

    @export(Resource)
    var resource = Resource('res://MyResource.tres')

    @export(Type)
    var node = Node2D

    @export(int, 'Enum', {'A': 0, 'B': 1, 'C': 2})
    var enum_value = 1

在上面的例子中,我们演示了所有支持的数据类型。

导出列表中的可选参数

Godot中的导出列表支持以下可选参数:

  • name:用于在编辑器中显示的名称。默认为变量名。
  • hint:用于指定编辑器应该如何处理该变量。例如,可以将hint设置为文件路径,以便在编辑器中选择文件。
  • toplevel:如果为True,则将此变量显示在节点的属性面板中,而不是节点的分组中。默认为False。
  • doubleclick:如果为True,则双击该变量时将显示一个额外的编辑器窗口。默认为False。
  • multiline:如果为True,则在编辑器中显示此变量的多行文本编辑器。默认为False。
  • rsetget:如果为True,则为此变量自动生成设置和获取方法。默认为False。

以下是一个例子,演示了如何使用这些可选参数:

from godot import *

class MyNode(Node2D):

    @export(float, name='Speed', hint='velocity', toplevel=True, doubleclick=True, multiline=True, rsetget=True)
    var speed = 10.0

在上面的例子中,我们使用了namehinttopleveldoubleclickmultilinersetget这些可选参数。

导出信号

除了导出变量,Godot也支持导出信号。导出信号使用@signal装饰器来声明。

以下是一个使用导出信号的例子:

from godot import *

class MyNode(Node2D):

    @signal
    def custom_signal(x: int, y: int):
        pass

在上面的例子中,我们使用@signal装饰器将custom_signal导出为一个信号。这样,在其他类中就可以通过连接到MyNodecustom_signal信号来接收该信号。