差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
modding:scripting [2022/03/14 15:46] – 硫缺铅 | modding:scripting [2022/03/19 17:24] (当前版本) – 补充 awa | ||
---|---|---|---|
行 1: | 行 1: | ||
+ | ====== 脚本编写 ====== | ||
+ | Mindustry 使用 JavaScript 作为脚本编写的语言。 | ||
+ | Mindustry 使用的 JavaScript 基于 Rhino。 | ||
+ | 所以你可以使用 Java 的类。 | ||
+ | 例如: | ||
+ | <code js> | ||
+ | java.lang.System.out.println(" | ||
+ | </ | ||
+ | |||
+ | 脚本使用 '' | ||
+ | 的拓展名,被放置在 '' | ||
+ | |||
+ | 脚本的执行开始于名为 '' | ||
+ | |||
+ | // | ||
+ | |||
+ | <code js> | ||
+ | require(" | ||
+ | require(" | ||
+ | </ | ||
+ | |||
+ | // | ||
+ | |||
+ | <code js> | ||
+ | const myBlock = extend(Conveyor, | ||
+ | // 各种字段... | ||
+ | size: 3, | ||
+ | health: 200 | ||
+ | //... | ||
+ | }); | ||
+ | </ | ||
+ | |||
+ | // | ||
+ | |||
+ | <code js> | ||
+ | const terribleium = Item(" | ||
+ | terribleium.color = Color.valueOf(" | ||
+ | //... | ||
+ | </ | ||
+ | |||
+ | ====== 示例 ====== | ||
+ | |||
+ | ===== 监听事件 ===== | ||
+ | |||
+ | <code js> | ||
+ | // 监听单位被摧毁的事件 | ||
+ | Events.on(UnitDestroyEvent, | ||
+ | // 如果单位是玩家在屏幕上方显示文字 | ||
+ | if(event.unit.isPlayer()){ | ||
+ | Vars.ui.hudfrag.showToast(" | ||
+ | } | ||
+ | }) | ||
+ | </ | ||
+ | 找到能监听的事件最简单的方法就是看源码: | ||
+ | |||
+ | ===== 显示对话框 ===== | ||
+ | |||
+ | <code js> | ||
+ | const myDialog = new BaseDialog(" | ||
+ | // 加入“关闭”按钮 | ||
+ | myDialog.addCloseButton(); | ||
+ | // 在主体中添加文字 | ||
+ | myDialog.cont.add(" | ||
+ | // 显示对话框 | ||
+ | myDialog.show(); | ||
+ | </ | ||
+ | |||
+ | ===== 播放自定义声音 ===== | ||
+ | |||
+ | 播放自定义声音很简单,你只需要提供在 '' | ||
+ | |||
+ | 在这个例子中,我们存储了 '' | ||
+ | ====使用链接库播放声音 ==== | ||
+ | |||
+ | // | ||
+ | |||
+ | <code js> | ||
+ | exports.loadSound = (() => { | ||
+ | const cache = {}; | ||
+ | return (path) => { | ||
+ | const c = cache[path]; | ||
+ | if (c === undefined) { | ||
+ | return cache[path] = loadSound(path); | ||
+ | } | ||
+ | return c; | ||
+ | } | ||
+ | })(); | ||
+ | </ | ||
+ | |||
+ | // | ||
+ | |||
+ | <code js> | ||
+ | const lib = require(" | ||
+ | Events.on(WaveEvent, | ||
+ | // 加载 example.mp3 | ||
+ | const mySound = lib.loadSound(" | ||
+ | // 游戏引擎将会在 (X, | ||
+ | mySound.at(1, | ||
+ | }) | ||
+ | </ | ||
+ | |||
+ | %%//%%TODO test these out and add more examples |