<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://mdtwiki.top/index.php?action=history&amp;feed=atom&amp;title=%E5%AE%98%E6%96%B9%E7%BB%B4%E5%9F%BA%E6%95%99%E7%A8%8B-%E8%84%9A%E6%9C%AC%E7%BC%96%E5%86%99</id>
	<title>官方维基教程-脚本编写 - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://mdtwiki.top/index.php?action=history&amp;feed=atom&amp;title=%E5%AE%98%E6%96%B9%E7%BB%B4%E5%9F%BA%E6%95%99%E7%A8%8B-%E8%84%9A%E6%9C%AC%E7%BC%96%E5%86%99"/>
	<link rel="alternate" type="text/html" href="https://mdtwiki.top/index.php?title=%E5%AE%98%E6%96%B9%E7%BB%B4%E5%9F%BA%E6%95%99%E7%A8%8B-%E8%84%9A%E6%9C%AC%E7%BC%96%E5%86%99&amp;action=history"/>
	<updated>2026-04-04T04:58:51Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://mdtwiki.top/index.php?title=%E5%AE%98%E6%96%B9%E7%BB%B4%E5%9F%BA%E6%95%99%E7%A8%8B-%E8%84%9A%E6%9C%AC%E7%BC%96%E5%86%99&amp;diff=2492&amp;oldid=prev</id>
		<title>硫缺铅：​创建页面，内容为“= 脚本编写 =  Mindustry 使用 JavaScript 作为脚本编写的语言。 Mindustry 使用的 JavaScript 基于 Rhino。 所以你可以使用 Java 的类。 例如:  &lt;pre lang=&quot;js&quot;&gt;java.lang.System.out.println(&quot;this is a test!&quot;); &lt;/pre&gt; 脚本使用 &lt;code&gt;js&lt;/code&gt; 的拓展名，被放置在 &lt;code&gt;scripts/&lt;/code&gt; 文件夹。  脚本的执行开始于名为 &lt;code&gt;main.js&lt;/code&gt; 的文件夹，其他脚本可以用&lt;code&gt;require(&amp;quot;脚本名&amp;quot;)&lt;/code&gt;…”</title>
		<link rel="alternate" type="text/html" href="https://mdtwiki.top/index.php?title=%E5%AE%98%E6%96%B9%E7%BB%B4%E5%9F%BA%E6%95%99%E7%A8%8B-%E8%84%9A%E6%9C%AC%E7%BC%96%E5%86%99&amp;diff=2492&amp;oldid=prev"/>
		<updated>2026-02-01T12:24:56Z</updated>

		<summary type="html">&lt;p&gt;创建页面，内容为“= 脚本编写 =  Mindustry 使用 JavaScript 作为脚本编写的语言。 Mindustry 使用的 JavaScript 基于 Rhino。 所以你可以使用 Java 的类。 例如:  &amp;lt;pre lang=&amp;quot;js&amp;quot;&amp;gt;java.lang.System.out.println(&amp;quot;this is a test!&amp;quot;); &amp;lt;/pre&amp;gt; 脚本使用 &amp;lt;code&amp;gt;js&amp;lt;/code&amp;gt; 的拓展名，被放置在 &amp;lt;code&amp;gt;scripts/&amp;lt;/code&amp;gt; 文件夹。  脚本的执行开始于名为 &amp;lt;code&amp;gt;main.js&amp;lt;/code&amp;gt; 的文件夹，其他脚本可以用&amp;lt;code&amp;gt;require(&amp;quot;脚本名&amp;quot;)&amp;lt;/code&amp;gt;…”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= 脚本编写 =&lt;br /&gt;
&lt;br /&gt;
Mindustry 使用 JavaScript 作为脚本编写的语言。 Mindustry 使用的 JavaScript 基于 Rhino。 所以你可以使用 Java 的类。 例如:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre lang=&amp;quot;js&amp;quot;&amp;gt;java.lang.System.out.println(&amp;quot;this is a test!&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
脚本使用 &amp;lt;code&amp;gt;js&amp;lt;/code&amp;gt; 的拓展名，被放置在 &amp;lt;code&amp;gt;scripts/&amp;lt;/code&amp;gt; 文件夹。&lt;br /&gt;
&lt;br /&gt;
脚本的执行开始于名为 &amp;lt;code&amp;gt;main.js&amp;lt;/code&amp;gt; 的文件夹，其他脚本可以用&amp;lt;code&amp;gt;require(&amp;amp;quot;脚本名&amp;amp;quot;)&amp;lt;/code&amp;gt;语句导入主文件。典型的设置脚本如下所示：&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;scripts/main.js&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre lang=&amp;quot;js&amp;quot;&amp;gt;require(&amp;quot;blocks&amp;quot;);&lt;br /&gt;
require(&amp;quot;items&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;scripts/blocks.js&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre lang=&amp;quot;js&amp;quot;&amp;gt;const myBlock = extend(Conveyor, &amp;quot;terrible-conveyor&amp;quot;, {&lt;br /&gt;
  // 各种字段...&lt;br /&gt;
  size: 3,&lt;br /&gt;
  health: 200&lt;br /&gt;
  //...&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;scripts/items.js&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre lang=&amp;quot;js&amp;quot;&amp;gt;const terribleium = Item(&amp;quot;terribleium&amp;quot;);&lt;br /&gt;
terribleium.color = Color.valueOf(&amp;quot;ff0000&amp;quot;);&lt;br /&gt;
//...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
= 示例 =&lt;br /&gt;
&lt;br /&gt;
== 监听事件 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre lang=&amp;quot;js&amp;quot;&amp;gt;// 监听单位被摧毁的事件&lt;br /&gt;
Events.on(UnitDestroyEvent, event =&amp;gt; {&lt;br /&gt;
  // 如果单位是玩家在屏幕上方显示文字&lt;br /&gt;
    if(event.unit.isPlayer()){&lt;br /&gt;
    Vars.ui.hudfrag.showToast(&amp;quot;Pathetic.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
找到能监听的事件最简单的方法就是看源码: [https://github.com/Anuken/Mindustry/blob/master/core/src/mindustry/game/EventType.java Mindustry/blob/master/core/src/mindustry/game/EventType.java]&lt;br /&gt;
&lt;br /&gt;
== 显示对话框 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre lang=&amp;quot;js&amp;quot;&amp;gt;const myDialog = new BaseDialog(&amp;quot;Dialog Title&amp;quot;);&lt;br /&gt;
// 加入“关闭”按钮&lt;br /&gt;
myDialog.addCloseButton();&lt;br /&gt;
// 在主体中添加文字&lt;br /&gt;
myDialog.cont.add(&amp;quot;Goodbye.&amp;quot;);&lt;br /&gt;
// 显示对话框&lt;br /&gt;
myDialog.show();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== 播放自定义声音 ==&lt;br /&gt;
&lt;br /&gt;
播放自定义声音很简单，你只需要提供在 &amp;lt;code&amp;gt;/sounds&amp;lt;/code&amp;gt; 里存储的&amp;lt;code&amp;gt;.mp3&amp;lt;/code&amp;gt; 或者 &amp;lt;code&amp;gt;.ogg&amp;lt;/code&amp;gt;文件。&lt;br /&gt;
&lt;br /&gt;
在这个例子中，我们存储了 &amp;lt;code&amp;gt;example.mp3&amp;lt;/code&amp;gt; 在 &amp;lt;code&amp;gt;/sounds/example.mp3&amp;lt;/code&amp;gt; 。&lt;br /&gt;
&lt;br /&gt;
=== 使用链接库播放声音 ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;scripts/alib.js&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre lang=&amp;quot;js&amp;quot;&amp;gt;exports.loadSound = (() =&amp;gt; {&lt;br /&gt;
    const cache = {};&lt;br /&gt;
    return (path) =&amp;gt; {&lt;br /&gt;
        const c = cache[path];&lt;br /&gt;
        if (c === undefined) {&lt;br /&gt;
            return cache[path] = loadSound(path);&lt;br /&gt;
        }&lt;br /&gt;
        return c;&lt;br /&gt;
    }&lt;br /&gt;
})();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;scripts/main.js&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre lang=&amp;quot;js&amp;quot;&amp;gt;const lib = require(&amp;quot;alib&amp;quot;);&lt;br /&gt;
Events.on(WaveEvent, event =&amp;gt; {&lt;br /&gt;
    // 加载 example.mp3&lt;br /&gt;
    const mySound = lib.loadSound(&amp;quot;example&amp;quot;);&lt;br /&gt;
    // 游戏引擎将会在 (X,Y)处生成声音&lt;br /&gt;
    mySound.at(1, 1);&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
//TODO test these out and add more examples&lt;/div&gt;</summary>
		<author><name>硫缺铅</name></author>
	</entry>
</feed>