如何在工具模式下添加滑块?

how to add slider in tool mode?

我正在尝试像这样在工具模式下添加一个滑块:

代码:

tool
extends Position2D

export(float) var CustomSlider = 0.1 setget changeSlider_x

func changeSlider_x(changed_val):
    CustomSlider=changed_val

首先要指出的是这个变量:

export(float) var CustomSlider = 0.1

是变体。甚至认为 Godot 在检查器面板上将其显示为浮动。

这是一个浮动,Godot 也会在检查面板中将其显示为浮动:

export var CustomSlider := 0.1

或者如果你希望类型明确,你可以这样写:

export var CustomSlider:float = 0.1

您在 export 后的括号中指定的是控制它在检查器面板中的显示方式。

我知道文档有点难找 - 因为还有其他东西叫做“导出” - 但这里是:GDScript exports

现在,要获得(有用的)滑块,您必须:

  • 指定数值范围:

    export(float, 0, 10) var CustomSlider:
    
  • 指定值范围,并对齐步长:

    export(float, 0, 10, 0.1) var CustomSlider:
    

    捕捉将是步长的倍数。也就是贴合不会被最小值和最大值偏移。

  • 指定指数滑块,最大值大于零(最小值将为零):

    export(float, EXP, 10) var CustomSlider:
    

    这样滑块就不是线性的了。你会发现在半点处的值是最大值的平方根,而不是一半。在三分之一的路程中,您找到最大值的立方根,依此类推。因此,数字在最大值附近更加紧密(例如,对于从 0 到 100 的范围,半点是 10,所以上半部分从 0 到 10,下半部分从 10 到 100)。

  • 指定具有最小值和最大值的指数滑块:

    export(float, EXP, 10, 100) var CustomSlider:
    

    这与上面的行为类似,只是它是偏移的,因此最小值不是零,而是您指定的值。

  • 指定一个指数滑块,具有最小值、最大值和对齐步长:

    export(float, EXP, 10, 100, 2) var CustomSlider:
    

    这将创建一个类似于前一个案例的指数滑块。除了这个会捕捉值,类似于之前描述的捕捉。


除了使用 export 之外,还有另一种方法可以在检查面板中显示内容:使用 _get_property_list(需要 tool 脚本),这会给我们更多的控制权(某些选项只能通过这种方式使用)。此外,我们可以调用 property_list_changed_notify 告诉 Godot 再次检查它应该在检查器面板中显示的内容,这将允许您动态更改它。


顺便说一下,你可以用小写字母和 _ 来写你的变量名,Godot 会把它大写,并在检查器面板中显示时用空格替换 _