4 个稳定版本
1.0.3 | 2023 年 10 月 27 日 |
---|---|
1.0.2 | 2023 年 10 月 17 日 |
1.0.1 | 2023 年 10 月 9 日 |
#431 in 数据结构
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!