<?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=JSON%E6%A8%A1%E7%BB%84%E6%95%99%E7%A8%8B-%E7%8A%B6%E6%80%81%E6%95%88%E6%9E%9C%E3%80%81%E7%89%B9%E6%95%88%E3%80%81%E9%9F%B3%E6%95%88</id>
	<title>JSON模组教程-状态效果、特效、音效 - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://mdtwiki.top/index.php?action=history&amp;feed=atom&amp;title=JSON%E6%A8%A1%E7%BB%84%E6%95%99%E7%A8%8B-%E7%8A%B6%E6%80%81%E6%95%88%E6%9E%9C%E3%80%81%E7%89%B9%E6%95%88%E3%80%81%E9%9F%B3%E6%95%88"/>
	<link rel="alternate" type="text/html" href="https://mdtwiki.top/index.php?title=JSON%E6%A8%A1%E7%BB%84%E6%95%99%E7%A8%8B-%E7%8A%B6%E6%80%81%E6%95%88%E6%9E%9C%E3%80%81%E7%89%B9%E6%95%88%E3%80%81%E9%9F%B3%E6%95%88&amp;action=history"/>
	<updated>2026-05-17T17:46:57Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://mdtwiki.top/index.php?title=JSON%E6%A8%A1%E7%BB%84%E6%95%99%E7%A8%8B-%E7%8A%B6%E6%80%81%E6%95%88%E6%9E%9C%E3%80%81%E7%89%B9%E6%95%88%E3%80%81%E9%9F%B3%E6%95%88&amp;diff=2585&amp;oldid=prev</id>
		<title>硫缺铅：​创建页面，内容为“&lt;span id=&quot;状态效果特效音效&quot;&gt;&lt;/span&gt; = 状态效果、特效、音效 =  这一节把“战斗表现”拆成三层：状态效果负责数值变化，特效负责视觉反馈，音效负责声音反馈。JSON 能完成绝大多数“表层表现”，但涉及反应联动与复杂行为时仍需要 Java 支持。  &lt;span id=&quot;状态效果statuseffect&quot;&gt;&lt;/span&gt; == 状态效果（StatusEffect） ==  状态效果是持续作用在单位上的“数值修饰…”</title>
		<link rel="alternate" type="text/html" href="https://mdtwiki.top/index.php?title=JSON%E6%A8%A1%E7%BB%84%E6%95%99%E7%A8%8B-%E7%8A%B6%E6%80%81%E6%95%88%E6%9E%9C%E3%80%81%E7%89%B9%E6%95%88%E3%80%81%E9%9F%B3%E6%95%88&amp;diff=2585&amp;oldid=prev"/>
		<updated>2026-02-01T13:34:04Z</updated>

		<summary type="html">&lt;p&gt;创建页面，内容为“&amp;lt;span id=&amp;quot;状态效果特效音效&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; = 状态效果、特效、音效 =  这一节把“战斗表现”拆成三层：状态效果负责数值变化，特效负责视觉反馈，音效负责声音反馈。JSON 能完成绝大多数“表层表现”，但涉及反应联动与复杂行为时仍需要 Java 支持。  &amp;lt;span id=&amp;quot;状态效果statuseffect&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; == 状态效果（StatusEffect） ==  状态效果是持续作用在单位上的“数值修饰…”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;span id=&amp;quot;状态效果特效音效&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= 状态效果、特效、音效 =&lt;br /&gt;
&lt;br /&gt;
这一节把“战斗表现”拆成三层：状态效果负责数值变化，特效负责视觉反馈，音效负责声音反馈。JSON 能完成绝大多数“表层表现”，但涉及反应联动与复杂行为时仍需要 Java 支持。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;状态效果statuseffect&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== 状态效果（StatusEffect） ==&lt;br /&gt;
&lt;br /&gt;
状态效果是持续作用在单位上的“数值修饰器”。它常常来自子弹、液体、天气或地板。例如子弹可以设置 &amp;lt;code&amp;gt;status&amp;lt;/code&amp;gt; 与 &amp;lt;code&amp;gt;statusDuration&amp;lt;/code&amp;gt;，液体可以设置 &amp;lt;code&amp;gt;effect&amp;lt;/code&amp;gt; 和 &amp;lt;code&amp;gt;status&amp;lt;/code&amp;gt;，天气可以定期施加某种状态。理解状态效果的关键是时间单位：Mindustry 以“刻”为单位，&amp;lt;code&amp;gt;1 秒 = 60 刻&amp;lt;/code&amp;gt;。因此 &amp;lt;code&amp;gt;damage = 0.1&amp;lt;/code&amp;gt; 并不是每秒 0.1 伤害，而是每刻 0.1，折算成每秒约 6 点伤害。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;damageMultiplier&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;healthMultiplier&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;speedMultiplier&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;reloadMultiplier&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;buildSpeedMultiplier&amp;lt;/code&amp;gt; 等倍率类字段会直接影响单位的基础数值。&amp;lt;code&amp;gt;speedMultiplier&amp;lt;/code&amp;gt; 影响移动速度，&amp;lt;code&amp;gt;reloadMultiplier&amp;lt;/code&amp;gt; 影响射速，&amp;lt;code&amp;gt;buildSpeedMultiplier&amp;lt;/code&amp;gt; 影响建造与修复速度。&amp;lt;code&amp;gt;damageMultiplier&amp;lt;/code&amp;gt; 与 &amp;lt;code&amp;gt;healthMultiplier&amp;lt;/code&amp;gt; 会改变单位的输出与血量，但不会改变当前血量的绝对值，只影响“计算时的倍率”。&lt;br /&gt;
&lt;br /&gt;
还有一些更容易被忽略的字段：&amp;lt;code&amp;gt;dragMultiplier&amp;lt;/code&amp;gt; 会影响转向和刹车感，适合做“粘滞”或“漂移”类状态；&amp;lt;code&amp;gt;damage&amp;lt;/code&amp;gt; 可以为负值，表示持续治疗，这在支援类状态里非常常见；&amp;lt;code&amp;gt;parentizeEffect&amp;lt;/code&amp;gt; 与 &amp;lt;code&amp;gt;parentizeApplyEffect&amp;lt;/code&amp;gt; 可以让特效跟随单位移动，适合让状态效果“贴身”表现；&amp;lt;code&amp;gt;show&amp;lt;/code&amp;gt; 与 &amp;lt;code&amp;gt;outline&amp;lt;/code&amp;gt; 则影响数据库是否显示以及图标描边，用于隐藏内部状态或做视觉区分。&lt;br /&gt;
&lt;br /&gt;
如果你需要“间歇式伤害”，可以用 &amp;lt;code&amp;gt;intervalDamage&amp;lt;/code&amp;gt; 与 &amp;lt;code&amp;gt;intervalDamageTime&amp;lt;/code&amp;gt;。前者是每次间隔造成的伤害，后者是间隔刻数。&amp;lt;code&amp;gt;intervalDamagePierce&amp;lt;/code&amp;gt; 设为 &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; 时会无视护甲。与之对应，&amp;lt;code&amp;gt;damage&amp;lt;/code&amp;gt; 是“每刻伤害”，适合持续灼烧与毒素。&amp;lt;code&amp;gt;disarm&amp;lt;/code&amp;gt; 会禁用武器，&amp;lt;code&amp;gt;applyExtend&amp;lt;/code&amp;gt; 控制“重复施加时是否再次触发 applyEffect”，&amp;lt;code&amp;gt;permanent&amp;lt;/code&amp;gt; 则让状态不会自然消失。&lt;br /&gt;
&lt;br /&gt;
状态叠加的逻辑也需要注意：同一种状态再次施加时，持续时间取更长的那一个，不会简单叠加伤害；不同状态之间会先检查反应逻辑，若存在反应则可能触发过渡效果并结束此次施加。&amp;lt;code&amp;gt;reactive&amp;lt;/code&amp;gt; 设为 &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; 的状态本身不会直接施加，它更像“只用于反应”的占位状态。&amp;lt;code&amp;gt;transitionDamage&amp;lt;/code&amp;gt; 则用于反应时的附加伤害，但它需要配合 Java 里的 &amp;lt;code&amp;gt;affinity&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;opposite&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;trans&amp;lt;/code&amp;gt; 才能生效。&lt;br /&gt;
&lt;br /&gt;
视觉层面的字段包括 &amp;lt;code&amp;gt;color&amp;lt;/code&amp;gt;（状态染色）、&amp;lt;code&amp;gt;effect&amp;lt;/code&amp;gt;（持续特效）、&amp;lt;code&amp;gt;effectChance&amp;lt;/code&amp;gt;（持续特效出现概率）、&amp;lt;code&amp;gt;applyEffect&amp;lt;/code&amp;gt;（施加瞬间特效）、&amp;lt;code&amp;gt;applyColor&amp;lt;/code&amp;gt;（施加特效颜色）、&amp;lt;code&amp;gt;outline&amp;lt;/code&amp;gt;（图标描边）与 &amp;lt;code&amp;gt;show&amp;lt;/code&amp;gt;（是否在数据库显示）。这些字段决定玩家“看见的状态”，但不改变数值逻辑。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;effect&amp;lt;/code&amp;gt; 与 &amp;lt;code&amp;gt;applyEffect&amp;lt;/code&amp;gt; 的差别很容易被忽略：前者是“持续随机触发”，后者是“施加瞬间触发”。如果你希望玩家每次命中都能感知状态，应该用 &amp;lt;code&amp;gt;applyEffect&amp;lt;/code&amp;gt; 或把 &amp;lt;code&amp;gt;effectChance&amp;lt;/code&amp;gt; 调高；如果你只想让状态有“淡淡的存在感”，则保持低概率即可。&amp;lt;code&amp;gt;applyExtend&amp;lt;/code&amp;gt; 设为 &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; 时，重复施加也会再次触发 &amp;lt;code&amp;gt;applyEffect&amp;lt;/code&amp;gt;，但这会带来更多特效开销，最好结合性能考虑。&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;文件：content/statuses/tutorial-slow.json&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;示例迟缓&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;让单位减速并轻微受伤。&amp;quot;,&lt;br /&gt;
    &amp;quot;color&amp;quot;: &amp;quot;7db6ff&amp;quot;,&lt;br /&gt;
    &amp;quot;speedMultiplier&amp;quot;: 0.7,&lt;br /&gt;
    &amp;quot;damage&amp;quot;: 0.02,&lt;br /&gt;
    &amp;quot;effect&amp;quot;: &amp;quot;wet&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
这个例子把速度降到 0.7，并附加少量持续伤害。&amp;lt;code&amp;gt;effect&amp;lt;/code&amp;gt; 引用了原版 &amp;lt;code&amp;gt;Fx.wet&amp;lt;/code&amp;gt;，因此会出现“潮湿”的粒子表现。&lt;br /&gt;
&lt;br /&gt;
如果你把 &amp;lt;code&amp;gt;damage&amp;lt;/code&amp;gt; 设成负值，它会变成持续治疗效果，而不是伤害。这种状态很适合配合支援单位或建筑，让它们在特定区域提供“微量修复”。配合 &amp;lt;code&amp;gt;reloadMultiplier&amp;lt;/code&amp;gt; 或 &amp;lt;code&amp;gt;buildSpeedMultiplier&amp;lt;/code&amp;gt;，还能做出“修复 + 加速”的复合增益。&lt;br /&gt;
&lt;br /&gt;
状态颜色也值得斟酌。&amp;lt;code&amp;gt;color&amp;lt;/code&amp;gt; 不仅影响状态图标，还会作为 &amp;lt;code&amp;gt;effect&amp;lt;/code&amp;gt; 的默认颜色参与渲染。如果你用了透明度较低的颜色，粒子会显得很淡；反之则可能“盖过”其他特效。调色时可以先用原版颜色作参照，再微调饱和度与透明度。&lt;br /&gt;
&lt;br /&gt;
需要注意的是，JSON 里写 &amp;lt;code&amp;gt;affinities&amp;lt;/code&amp;gt; 或 &amp;lt;code&amp;gt;opposites&amp;lt;/code&amp;gt; 只会影响数据库展示，并不会触发真正的反应逻辑。原版的“潮湿 + 电击”之类的连锁效果是在 Java 里通过 &amp;lt;code&amp;gt;affinity&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;opposite&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;trans&amp;lt;/code&amp;gt; 注册的，JSON 无法配置这部分，所以仍需代码支持。（注：笔者已经提交了相关的代码，正在等候 Anuke 合并）&lt;br /&gt;
&lt;br /&gt;
== 状态的来源与扩散 ==&lt;br /&gt;
&lt;br /&gt;
状态效果并不只来自子弹。液体在地面形成水洼时可以施加状态，天气可以周期性施加状态，某些地板也会在单位经过时附加状态。这意味着你在设计状态时，不仅要考虑“命中时的效果”，还要考虑它被环境广泛传播后的影响。例如一个过于强力的减速状态，如果被地板或天气传播，很容易让整张地图的战斗节奏失衡。&lt;br /&gt;
&lt;br /&gt;
状态持续时间的刷新也会影响战斗体验。相同状态再次施加时会把持续时间拉到更长的那个值，而不是叠加两倍伤害。这个机制会让“持续补状态”的武器表现稳定，但也会让“低频高强度”的状态不容易在短时间内叠加。设计时要么提高 &amp;lt;code&amp;gt;damage&amp;lt;/code&amp;gt;，要么把 &amp;lt;code&amp;gt;intervalDamageTime&amp;lt;/code&amp;gt; 设得更短，避免状态存在但伤害不明显。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;statusDuration&amp;lt;/code&amp;gt; 在子弹、液体、天气中的来源不同，但都需要与你的节奏匹配。持续时间过短，玩家几乎看不到效果；过长又会让状态“像永久一样”覆盖战场。一个常用的做法是先根据武器的 &amp;lt;code&amp;gt;reload&amp;lt;/code&amp;gt; 估算触发频率，再反推 &amp;lt;code&amp;gt;statusDuration&amp;lt;/code&amp;gt;，保证“效果可见但不会堆满”。&lt;br /&gt;
&lt;br /&gt;
单位免疫是另一层平衡手段。&amp;lt;code&amp;gt;UnitType&amp;lt;/code&amp;gt; 的 &amp;lt;code&amp;gt;immunities&amp;lt;/code&amp;gt; 可以让单位完全无视某些状态，这常用于“高阶单位”或“Boss”，也可以用来塑造阵营特色。比如你可以让某个阵营对“燃烧”免疫，但对“冻结”更敏感，从而改变玩家的武器选择。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;模组示例饱和火力-3.3.0-的急冻&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== 模组示例：饱和火力 3.3.0 的“急冻” ==&lt;br /&gt;
&lt;br /&gt;
在“饱和火力 3.3.0”里，“急冻”是一个典型的高伤害减速状态。它同时降低速度、生命倍率与射速，还加入了自定义的粒子特效。注意 &amp;lt;code&amp;gt;effect&amp;lt;/code&amp;gt; 使用了 &amp;lt;code&amp;gt;ParticleEffect&amp;lt;/code&amp;gt; 并指定了 &amp;lt;code&amp;gt;region&amp;lt;/code&amp;gt;，这意味着它依赖自定义贴图。下面是该状态的节选：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;急冻&amp;quot;,&lt;br /&gt;
    &amp;quot;color&amp;quot;: &amp;quot;c0ecff&amp;quot;,&lt;br /&gt;
    &amp;quot;damage&amp;quot;: 1.62,&lt;br /&gt;
    &amp;quot;healthMultiplier&amp;quot;: 0.7,&lt;br /&gt;
    &amp;quot;speedMultiplier&amp;quot;: 0.4,&lt;br /&gt;
    &amp;quot;reloadMultiplier&amp;quot;: 0.45,&lt;br /&gt;
    &amp;quot;opposites&amp;quot;: [&amp;quot;burning&amp;quot;, &amp;quot;melting&amp;quot;, &amp;quot;殁火&amp;quot;],&lt;br /&gt;
    &amp;quot;effect&amp;quot;: {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;ParticleEffect&amp;quot;,&lt;br /&gt;
        &amp;quot;particles&amp;quot;: 3,&lt;br /&gt;
        &amp;quot;lifetime&amp;quot;: 26,&lt;br /&gt;
        &amp;quot;region&amp;quot;: &amp;quot;饱和火力-三角形&amp;quot;,&lt;br /&gt;
        &amp;quot;colorFrom&amp;quot;: &amp;quot;c0ecff&amp;quot;,&lt;br /&gt;
        &amp;quot;colorTo&amp;quot;: &amp;quot;c0ecff&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
这个例子展示了“数值压制 + 强视觉效果”的组合。&amp;lt;code&amp;gt;opposites&amp;lt;/code&amp;gt; 在 JSON 里只用于显示，但它至少能让玩家在数据库面板上读到“急冻与燃烧对立”的信息。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;模组示例饱和火力-3.3.0-的状态脚本&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== 模组示例：饱和火力 3.3.0 的状态脚本 ==&lt;br /&gt;
&lt;br /&gt;
“饱和火力 3.3.0”里有一批状态是用脚本补逻辑的。例如“阳电/阴电”的亲和反应就写在 &amp;lt;code&amp;gt;scripts/base/status.js&amp;lt;/code&amp;gt;，通过 &amp;lt;code&amp;gt;affinity&amp;lt;/code&amp;gt; 把两种状态之间的连锁伤害显式编码出来：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;const 阳电 = extend(StatusEffect, &amp;quot;阳电&amp;quot;, {&lt;br /&gt;
    init() {&lt;br /&gt;
        this.affinity(阴电, (unit, result, time) =&amp;gt; {&lt;br /&gt;
            unit.damagePierce(this.transitionDamage);&lt;br /&gt;
            result.set(阴电, Math.min(time + result.time, 60));&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/pre&amp;gt;&lt;br /&gt;
这类逻辑无法用 JSON 表达，但它能让状态从“单一数值”变成“反应体系”。当你需要状态之间的联动时，脚本或 Java 才是正确的解决路径。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;特效effect-fx&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== 特效（Effect / Fx） ==&lt;br /&gt;
&lt;br /&gt;
特效是短时视觉片段，常见于炮塔开火、方块建造、生产完成、单位死亡等。JSON 里可以直接写原版 &amp;lt;code&amp;gt;Fx&amp;lt;/code&amp;gt; 的名字（字符串），也可以写一个对象并指定 &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; 来创建自定义特效。若对象里不写 &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;，解析器会默认把它当成 &amp;lt;code&amp;gt;ParticleEffect&amp;lt;/code&amp;gt;。如果你写的是数组，解析器会自动合成为 &amp;lt;code&amp;gt;MultiEffect&amp;lt;/code&amp;gt;，多种特效将同时播放。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ParticleEffect&amp;lt;/code&amp;gt; 的核心参数是 &amp;lt;code&amp;gt;particles&amp;lt;/code&amp;gt;（粒子数量）、&amp;lt;code&amp;gt;lifetime&amp;lt;/code&amp;gt;（持续时间）、&amp;lt;code&amp;gt;length&amp;lt;/code&amp;gt;（拖尾长度）、&amp;lt;code&amp;gt;sizeFrom/sizeTo&amp;lt;/code&amp;gt;（大小变化）与 &amp;lt;code&amp;gt;colorFrom/colorTo&amp;lt;/code&amp;gt;（颜色渐变）。这些字段组合后，就能做出火花、烟雾、能量粒子等常见效果。&amp;lt;code&amp;gt;WaveEffect&amp;lt;/code&amp;gt; 则更适合做冲击波或环形波纹，它常用 &amp;lt;code&amp;gt;sizeFrom/sizeTo&amp;lt;/code&amp;gt; 与 &amp;lt;code&amp;gt;strokeFrom/strokeTo&amp;lt;/code&amp;gt; 描绘“扩散与淡出”。如果你想要更复杂的效果，可以用 &amp;lt;code&amp;gt;MultiEffect&amp;lt;/code&amp;gt; 组合多种模板，或者直接引用原版 &amp;lt;code&amp;gt;Fx&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
特效对象还有一些“行为型”的通用字段。&amp;lt;code&amp;gt;followParent&amp;lt;/code&amp;gt; 与 &amp;lt;code&amp;gt;rotWithParent&amp;lt;/code&amp;gt; 可以让特效跟随单位或子弹移动并旋转，适合做“贴身效果”；&amp;lt;code&amp;gt;startDelay&amp;lt;/code&amp;gt; 能推迟播放，用来制造“延迟爆炸”或“余波”；&amp;lt;code&amp;gt;clip&amp;lt;/code&amp;gt; 与 &amp;lt;code&amp;gt;layer&amp;lt;/code&amp;gt; 则影响绘制范围与层级，让特效不会被地形遮挡或被 UI 覆盖。你不一定每次都用到这些字段，但当表现“看起来不对”时，往往就是这些细节决定了最终观感。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;craftEffect&amp;quot;: {&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;ParticleEffect&amp;quot;,&lt;br /&gt;
    &amp;quot;particles&amp;quot;: 6,&lt;br /&gt;
    &amp;quot;lifetime&amp;quot;: 30,&lt;br /&gt;
    &amp;quot;length&amp;quot;: 6,&lt;br /&gt;
    &amp;quot;sizeFrom&amp;quot;: 2,&lt;br /&gt;
    &amp;quot;sizeTo&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;colorFrom&amp;quot;: &amp;quot;ffffff&amp;quot;,&lt;br /&gt;
    &amp;quot;colorTo&amp;quot;: &amp;quot;a0b4ff&amp;quot;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
注意 &amp;lt;code&amp;gt;lifetime&amp;lt;/code&amp;gt; 的单位仍然是刻。一个 &amp;lt;code&amp;gt;lifetime = 30&amp;lt;/code&amp;gt; 的特效持续约 0.5 秒，过长会显得“拖泥带水”，过短又会看不清。调参时可以先让 &amp;lt;code&amp;gt;lifetime&amp;lt;/code&amp;gt; 稍长一些，确认效果后再缩短。&lt;br /&gt;
&lt;br /&gt;
== 特效与性能的平衡 ==&lt;br /&gt;
&lt;br /&gt;
特效是最容易“堆出卡顿”的部分。粒子数量、生命周期和范围都会影响性能，尤其是大量单位同时触发时。一个 &amp;lt;code&amp;gt;particles = 30&amp;lt;/code&amp;gt; 的特效看起来很华丽，但如果你的炮塔射速很高，很快就会在战场上堆出几百个粒子。更稳妥的做法是用较少的粒子配合颜色与大小变化，让效果“看起来很强”，而不是“真的很重”。&lt;br /&gt;
&lt;br /&gt;
除了减粒子，还可以调 &amp;lt;code&amp;gt;effectChance&amp;lt;/code&amp;gt; 与 &amp;lt;code&amp;gt;lifetime&amp;lt;/code&amp;gt; 来控制频率与持续时间。很多持续性武器只需要“稀疏但明显”的特效，完全没必要每一帧都生成粒子。再配合较小的 &amp;lt;code&amp;gt;clip&amp;lt;/code&amp;gt; 范围，渲染开销会明显下降，战斗场面也更干净。&lt;br /&gt;
&lt;br /&gt;
另外，特效的风格要与数值一致。高爆发武器可以用明显的冲击波与闪光，持续性武器可以用细小但连贯的粒子。玩家会通过视觉判断武器强度，如果特效与实际伤害差距太大，会造成体验上的“误导”。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;音效sound&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== 音效（Sound） ==&lt;br /&gt;
&lt;br /&gt;
音效来源于 &amp;lt;code&amp;gt;core/assets/sounds&amp;lt;/code&amp;gt;。在 JSON 中通常直接引用 &amp;lt;code&amp;gt;Sounds&amp;lt;/code&amp;gt; 里的字段名，例如 &amp;lt;code&amp;gt;shootSound&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;chargeSound&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;placeSound&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;breakSound&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;destroySound&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;ambientSound&amp;lt;/code&amp;gt;。不同方块或武器对音效字段的支持并不完全一致，所以建议先对照原版配置再填写。&lt;br /&gt;
&lt;br /&gt;
若你自带音效，把 &amp;lt;code&amp;gt;ogg&amp;lt;/code&amp;gt; 或 &amp;lt;code&amp;gt;mp3&amp;lt;/code&amp;gt; 放进 &amp;lt;code&amp;gt;sounds/&amp;lt;/code&amp;gt; 目录，文件名就是你要引用的名字。音效的“响度与音高”通常由 &amp;lt;code&amp;gt;soundVolume&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;soundPitchMin&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;soundPitchMax&amp;lt;/code&amp;gt; 控制，但具体字段是否生效取决于方块或武器的实现。因此更安全的做法是先复用原版字段，再逐步替换。&lt;br /&gt;
&lt;br /&gt;
持续性的声音通常用 &amp;lt;code&amp;gt;loopSound&amp;lt;/code&amp;gt; 或 &amp;lt;code&amp;gt;ambientSound&amp;lt;/code&amp;gt;，前者更多用于“正在工作”的设备，后者偏向环境氛围。搭配 &amp;lt;code&amp;gt;soundPitchMin/soundPitchMax&amp;lt;/code&amp;gt; 做轻微的音高浮动，能让连续播放的声音不至于太机械；而 &amp;lt;code&amp;gt;soundVolume&amp;lt;/code&amp;gt; 则是最直接的平衡杠杆，尤其在一屏多个炮塔同时开火时，适当降音量能显著减少“噪声疲劳”。&lt;br /&gt;
&lt;br /&gt;
如果你在一个关卡里同时使用了多种自定义音效，最好先做一次“混音检查”，避免同频段叠加导致刺耳或浑浊。很多时候只需要略微降低音量或缩短音效长度，就能让整体听感更清晰。&lt;br /&gt;
&lt;br /&gt;
== 声音作为设计的一部分 ==&lt;br /&gt;
&lt;br /&gt;
音效并不是“可有可无”的装饰。射击音效能告诉玩家“是否在命中”，充能音效能提示“是否即将开火”，环境音效则能让地图氛围更完整。比如高能武器如果没有明显的充能音效，玩家很难感知它的危险性；而持续性武器如果没有稳定的循环音效，又会显得没有存在感。建议在设计时让“听觉反馈”和“数值强度”保持一致。&lt;br /&gt;
&lt;br /&gt;
如果你的模组里有多种炮塔或单位同时开火，音效的“混响”也很重要。过多高频音效会刺耳，过多低频音效会让战场变得浑浊。你可以通过调整音量或替换音效，让战斗听起来更清晰。&lt;br /&gt;
&lt;br /&gt;
== 小结 ==&lt;br /&gt;
&lt;br /&gt;
状态效果偏数值，特效与音效偏表现。只要理解“时间单位”和“叠加逻辑”，你就能做出稳定且易调的状态体系；再配合合适的特效与音效，就能让战斗表现明显提升。很多模组质感的差异，往往就来自这三者的配合，并且要与武器节奏保持一致，也更耐看。&lt;/div&gt;</summary>
		<author><name>硫缺铅</name></author>
	</entry>
</feed>