0

我有一个 GDScript 文件,我希望能够在加载脚本时运行一段代码。我知道_init只要构造实例_ready就会运行,并且会在将实例添加到场景树时运行。我想在这些事件发生之前运行代码;当preloadorload首次将其带入内存时。

在 Java 中,这将是一个静态初始化块,就像这样

public class Example {
    public static ArrayList<Integer> example = new ArrayList<Integer>;
    static {
        // Pretend this is a complicated algorithm to compute the example array ...
        example.add(1);
        example.add(2);
        example.add(3);
    }
}

我想对 Godot 中的 GDScript 文件做同样的事情,在第一次加载脚本时计算一些顶级常量或其他配置数据,例如(我意识到这不是有效的 GDScript)

extends Node
class_name Example

const EXAMPLE = []

static:
    EXAMPLE.push_back(1)
    EXAMPLE.push_back(2)
    EXAMPLE.push_back(3)

有没有办法获得这样的特征,甚至近似它?

背景信息:我关心的原因(除了对此类问题的一般学术兴趣之外)是我正在研究一种使用 GDScript 作为编译目标的脚本语言,并且在我的语言中,需要某些初始化和注册程序碰巧让我的语言的运行时保持愉快,并且每当加载我的语言的新脚本时都需要这样做。

实际上我想做的事情基本上是

static:
    MyLanguageRuntime.register_class_file(this_file, ...)

whereMyLanguageRuntime是存在于场景树顶部的单例节点,以保持一切顺利运行。

4

0 回答 0