编辑本页后请点击“保存”。请参阅 syntax 了解维基语法。只有在您能 改进 该页面的前提下才编辑它。如果您想尝试语法,请先到 playground 里热身。 媒体文件====== 脚本编写 ====== Mindustry 使用 JavaScript 作为脚本编写的语言。 Mindustry 使用的 JavaScript 基于 Rhino。 所以你可以使用 Java 的类。 例如: <code js> java.lang.System.out.println("this is a test!"); </code> 脚本使用 ''%%js%%'' 的拓展名,被放置在 ''%%scripts/%%'' 文件夹。 脚本的执行开始于名为 ''%%main.js%%'' 的文件夹,其他脚本可以用''%%require("脚本名")%%''语句导入主文件。典型的设置脚本如下所示: //scripts/main.js//: <code js> require("blocks"); require("items"); </code> //scripts/blocks.js//: <code js> const myBlock = extend(Conveyor, "terrible-conveyor", { // 各种字段... size: 3, health: 200 //... }); </code> //scripts/items.js//: <code js> const terribleium = Item("terribleium"); terribleium.color = Color.valueOf("ff0000"); //... </code> ====== 示例 ====== ===== 监听事件 ===== <code js> // 监听单位被摧毁的事件 Events.on(UnitDestroyEvent, event => { // 如果单位是玩家在屏幕上方显示文字 if(event.unit.isPlayer()){ Vars.ui.hudfrag.showToast("Pathetic."); } }) </code> 找到能监听的事件最简单的方法就是看源码: [[https://github.com/Anuken/Mindustry/blob/master/core/src/mindustry/game/EventType.java|Mindustry/blob/master/core/src/mindustry/game/EventType.java]] ===== 显示对话框 ===== <code js> const myDialog = new BaseDialog("Dialog Title"); // 加入“关闭”按钮 myDialog.addCloseButton(); // 在主体中添加文字 myDialog.cont.add("Goodbye."); // 显示对话框 myDialog.show(); </code> ===== 播放自定义声音 ===== 播放自定义声音很简单,你只需要提供在 ''%%/sounds%%'' 里存储的''%%.mp3%%'' 或者 ''%%.ogg%%''文件。 在这个例子中,我们存储了 ''%%example.mp3%%'' 在 ''%%/sounds/example.mp3%%'' 。 ====使用链接库播放声音 ==== //scripts/alib.js//: <code js> exports.loadSound = (() => { const cache = {}; return (path) => { const c = cache[path]; if (c === undefined) { return cache[path] = loadSound(path); } return c; } })(); </code> //scripts/main.js//: <code js> const lib = require("alib"); Events.on(WaveEvent, event => { // 加载 example.mp3 const mySound = lib.loadSound("example"); // 游戏引擎将会在 (X,Y)处生成声音 mySound.at(1, 1); }) </code> %%//%%TODO test these out and add more examples请填入算式的结果以证明您不是机器人。 139 +2 = 请将此区域留空:保存预览取消 编辑摘要 当您选择开始编辑本页,即寓示你同意将你贡献的内容按下列许可协议发布: CC Attribution-Share Alike 4.0 International