#events #async #maker #studio #gms2 #gml #language

async_load

从 Rust 触发 GMS2 异步事件的功能

4 个稳定版本

1.0.3 2023 年 10 月 27 日
1.0.2 2023 年 10 月 17 日
1.0.1 2023 年 10 月 9 日

#431 in 数据结构

GPL-3.0-only

51KB
285

Async Load

这个包包含使用全局 async_load 变量中的 ds_map 结构来触发 GMS2 异步事件并将数据传递给它们的功能。

关于

GMS2 (游戏制作师工作室 2) 是一个适用于所有平台的游戏引擎,它使用 GML (游戏制作师语言)。

可以通过扩展(自定义库)来增强其功能。
这个包可以帮助构建一个可以从 Rust 中“调用 GML”的扩展。

如何使用

为了能够执行任何类型的操作,需要定义一个外部的 RegisterCallbacks 函数。
它可以在 src/lib.rs 中找到。

要激活它,只需启用 extension 功能

[dependencies.ds_map]
version = "1.0.2"
features = [
    "extension",
]

(您也可以禁用此功能并手动定义 RegisterCallbacks

然后在您的 GMS2 项目内部,打开您的扩展,并添加一个新函数,如图中所示:

不要调用此函数,它将由 GMS2 自动执行。

这将注册所有必要的回调,并允许您使用 DSMap 结构。

示例

Rust

#[no_mangle]
#[allow(non_snake_case, unused_variables)]
pub unsafe extern "C" fn MyFunction() -> GMLDouble {
    use std::thread::*;
    use std::time::Duration;

    // Spawn new thread.
    spawn(|| {
        // Wait for 1 second.
        sleep(Duration::from_secs(1));

        // Create and dispatch the map.
        let mut map = DSMap::new();
        map.add_double("key1", 21.37);
        map.add_string("key2", "Hello from Rust!");
        map.dispatch(EventType::Social);
    });

    GMLDouble::none()
}

GMS2 对象 Create 事件

show_debug_message("[*] Start");
MyFunction();
show_debug_message("[*] Finished");

GMS2 对象 Async - Social 事件

show_debug_message("[*] Async - Social");
show_debug_message(async_load[? "key1"]);
show_debug_message(async_load[? "key2"]);

输出

[*] Start
[*] Finished

(...) <some other info>

[*] Async - Social
21.37
Hello from Rust!

依赖项