Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Magic Book of Word Game World

《文字游戏世界》魔法书

最新更新日期:2026/3/22;游戏版本:v1.9.82

镜像源:GitHub Pages(较慢)Vercel(更快)

正式版已在 Steam 推出,详见:《文字游戏世界》-Steam

《文字游戏世界》中黑魔法(原始指令)的wiki*(非官方!非官方!非官方!)*

旨在官方出之前提供一个简单的查询文档,以便开发关卡!

注:本文档所有指令是通过关卡源文件推测的,并非 100% 经过测试!!!

感谢 “文字游戏世界” QQ 群的大伙查缺补漏,以及挖掘机制,谢谢!

本文档并不针对零基础用户编写,默认您已经了解编辑器的基本逻辑


目录:

事件

原版可添加事件

原版不可添加事件

特殊写法

实用工具


友情链接:

…(待补充)


主要编写者:TNOT(tnot123@outlook.com)

特别感谢:艺素馒头

如有问题或意见可以联系我,或在官方Q群@我。

当然也欢迎提交pr进行修改/编写!

物件操作

该页面展示的黑魔法均为在游戏内插入后的默认参数

传送器

@[transport_event] {
  
    "target": null,
    "pos": [
      0,
      0
    ]
  
}

官方示例(标靶传送魔法):

@[transport_event] {
"target": "魔法傀儡", 
"pos": ["v:目标x","v:目标y"]
}

溶解器

@[dissolve_event] {
  
    "target": null
  
}

触发物件

@[callback_trigger] {
  
    "target": null
  
}

播放动画

@[play_animation] {
  
    "target": null
  
}

淡入淡出

@[event_fade_to] {
  
    "target": "Player",
    "opacity": 0,
    "time_sec": 1
  
}

参数说明

  • target:目标物件名称,必填。
  • opacity:目标不透明度,可选。
  • time_sec:淡入/淡出持续时间(秒),可选。

向上/下/左/右走一格

此类 move 指令只能通过@[move_route]调用,具体使用方法见 移动


@[move_up]


@[move_down]


@[move_left]


@[move_right]

走到目标位置

此类 move 指令只能通过@[move_route]调用,具体使用方法见 移动

@[move_to_point] {
  
    "pos": [
      0,
      0
    ]
  
}

走到目标物件

此类 move 指令只能通过@[move_route]调用,具体使用方法见 移动

@[move_to_event] {
  
    "toTarget": null
  
}

设定碰撞

@[set_through] {
  
    "target": null,
    "isThrough": true
  
}

改变玩家字面


@[set_player_text] "我"

改变玩家颜色


@[set_player_color] "#ffffff"

改变玩家不透明度


@[set_player_opacity] 0.5

打字机

打字

全参数默认模板(纯 JSON):

@[type_parallel] {
    "texts": "你好,世界!",
    "fixed": false,
    "pos": [0, 0],
    "tags": [],
    "has_se": true,
    "char_type": null,
    "has_animation": true,
    "layer": 1,
    "can_skip": true,
    "need_accept": true,
    "wait": true,
    "is_dialog_end": false,
    "refTexts": [],
    "is_on_top_of_player": true,
    "offset": [0, 0],
    "label_settings": {}
}

带注释的版本:

@[type_parallel] {
    "texts": "你好,世界!",    # 打字内容(支持 <标签>文本</标签> 与 字{参数对象} 写法)
    "fixed": false,    # 是否使用屏幕坐标(false为地图坐标)
    "pos": [0, 0],    # 打字位置 [x, y]
    "tags": [],    # 标签/组列表(可用于后续 fade_group、dissolve_group 等组操作)
    "has_se": true,    # 是否播放打字音效
    "char_type": null,    # 打字机音效类型(null为默认)
    "has_animation": true,    # 是否显示打字动画
    "layer": 1,    # 图层:0=背景,1=主要,2=前景
    "can_skip": true,    # 是否可以跳过
    "need_accept": true,    # 是否需要确认
    "wait": true,    # 是否等待打字结束
    "is_dialog_end": false,    # 是否启用实心游标(常用于对话结束前的最后一句)
    "refTexts": [],    # 参考文本列表(用于成句检测)
    "is_on_top_of_player": true,    # 主要图层时是否显示在玩家上方
    "offset": [0, 0],    # 位置微调偏移 [x, y]
    "label_settings": {}    # 标签独立样式设置
}

缩写:@[type] 注:打字机中的"texts"可以有如下写法

  • "v:变量名":输出指定变量的值
  • "s:开关名":输出指定开关的值
  • "转移[物件名称]到这个地方。":转移物件

type_parallel 还支持以下高级参数:

  • tags:标签/组列表。打字字符会加入这些组,可配合 fade_groupdissolve_group 做统一处理;dissolve_group 是溶解组内物件,不是解散组。 示例:@[type] {"texts":"我马上要消失喽!","tags":["b"]} @[fade_group] {"group": "b","opacity": 0,"time_sec": 1.0}

  • offset[x, y],对打字位置进行微调(像素偏移),可搭配变量使用。

  • texts:打字文本,除普通文本外,还支持以下扩展写法:

    • 标签样式片段<标签名>...</标签名>,并在 label_settings 中定义同名标签参数。 示例:"正常说话||<p>诗人说话</p>||<s>蛇妖说话</s>"
    • 逐字独立参数:在某个字后追加 {...},可将该字独立并指定参数。 示例:"老{'name':'教学词1','opacity':0}||繁{'tags':['cn_text:繁简']}"
    • 插入物件参数[物件{'tags':['标签']}]。 可用于“删整句但保留该物件”等场景。
  • label_settings:对象,用于为文本中的特定标签设置独立的样式与音效。 在 texts 中使用 <标签名>...</标签名> 包裹需要独立设置的片段,然后在 label_settings 中定义同名标签的属性。 每个标签可设置:

    • text_color:文字颜色(十六进制 RGBA,如 "#ffff00ff"
    • tags:该片段独有的标签列表
    • char_type:该片段使用的打字机音效(见下方 char_type 可选值)

    示例:

    "label_settings": {
      "p": {
        "char_type": "poet"
      },
      "s": {
        "char_type": "snake"
      }
    }
    
  • texts 中逐字参数可更改项

    • {'name':'名称'}
    • {'text':'字面'}
    • {'opacity':1}
    • {'tags':['cn_text:繁简']}
    • {'tags':['label #1']}
    • {'layer':'back'}

    注意:在插入物件场景下,上述参数通常只有 tags 能生效,其它参数不生效。

  • char_type:指定打字机音效,可选值:

    • "princess"(公主)
    • "dragon"(龙)
    • "snake"(蛇)
    • "poet"(诗人)
    • "giant_l"(巨人左)
    • "giant_r"(巨人右)
    • "none"(无音效)
    • null(使用默认音效)
  • layer:图层,可用数字表示:

    • 0:背景层
    • 1:主要层(默认)
    • 2:前景层 亦可用字符串 "mid" 表示主要层。
  • is_on_top_of_player:当 layer 为主要层时,若为 true 则文本显示在玩家上方。

  • wait:若为 true,事件将等待打字结束后才继续执行后续逻辑。

  • is_dialog_end:若为 true,启用实心游标,通常用于一段对话结束前的最后一句。

在此推荐由 艺素馒头 制作的黑魔法打字机编辑器,其拥有强大的可视化打字机黑魔法指令编辑功能。 黑魔法打字机编辑器

清除


@[clear_typed] ""

若标签为空,则默认为清除本物件触发的打字机事件。

能力设定

该页面展示的黑魔法均为在游戏内插入后的默认参数

拆组字


@[set_split_power] true

删字


@[set_backspace_power] true

推字


@[set_push_power] true

复原地图


@[set_ctrl_z_power] true

游戏机制

该页面展示的黑魔法均为在游戏内插入后的默认参数

宣告拆字规则

@[append_split_rule] {
  
    "from": [
      null
    ],
    "to": [
      null,
      null
    ]
  
}

注:指定字面:"字面",指定名字:"$名字"

宜告组字规则

@[append_merge_rule] {
  
    "from": [
      null,
      null
    ],
    "to": null
  
}

注:指定字面:"字面",指定名字:"$名字"

宣告成句规则

@[append_sentence_rule] {
  
    "text": "成句",
    "has_hint": false,
    "has_animation": true,
    "memory": [],
    "progress": 0,
    "level": 5
  
}

取消成句规则

@[delete_sentence_rule] {
  
    "text": "成句"
  
}

点唱机

该页面展示的黑魔法均为在游戏内插入后的默认参数

播放背景音乐

@[editor_play_bgm] {
  
    "type": null
  
}

停止背景音乐


@[editor_stop_bgm]

播放音效

@[editor_play_se] {
  
    "type": null
  
}

镜头

该页面展示的黑魔法均为在游戏内插入后的默认参数

跟随玩家

@[set_camera_follow_player] { true }

特定方向移动

@[pan_camera] {
  
    "parameter": "position:x",
    "add": 60,
    "time_sec": 1,
    "target": "Node/MainMap/Player/Camera3D",
    "target_type": "path",
    "wait": true
  
}

移动到目标位置

@[pan_camera_to_point] {
  
    "pos": [
      0,
      0
    ],
    "time_sec": 1,
    "wait": true
  
}

震动

@[start_constant_shake] {
  
    "f": 20,
    "d": 0.5
  
}

停止震动


@[stop_constant_shake]

画面渐变至颜色

@[fade_screen] {
  
    "color": "#000000",
    "alpha": 0,
    "time_sec": 1
  
}

提示

该页面展示的黑魔法均为在游戏内插入后的默认参数

叮!


@[event_end_hint]

物件呼吸灯

@[add_loop_light] {
  
    "target": null
  
}

停止物件呼吸灯

@[remove_loop_light] {
  
    "target": null
  
}

强调位置

@[highlight] {
  
    "pos": [
      0,
      0
    ],
    "text_count": 1,
    "is_h": true
  
}

改变选单提示

@[set_editor_project_info] {
  
    "title": "",
    "description": "",
    "hint_1": "",
    "hint_2": "",
    "hint_3": ""
  
}

系统

该页面展示的黑魔法均为在游戏内插入后的默认参数

延迟固定时间


@[wait] 50

注:单位为 0.02s

如需要无阻塞延迟,参见打字机的高级用法中的利用延迟符号实现无阻塞延迟

延迟随机时间

@[wait_random_in_range] {
  
    "value": [
      0,
      0
    ],
    "option": {
      "expend": true
    }
  
}

直接结束事件

@[break]

游戏存挡

@[editor_save]

游戏读挡

@[editor_load] {
  
    "trans_ani": "fade"
  
}

玩家死亡

@[kill_player] {
  
    "death_sentence": ""
  
}

切换地图

@[change_editor_map] {
  
    "name": "",
    "fade": true
  
}

外部连结

@[editor_open_url] {
  
    "url": ""
  
}

结束游戏

@[editor_end_game] {
  
    "texts": "游戏结束,感谢您的游玩",
    "pos": [
      10,
      8
    ]
  
}

黑魔法

@[#raw_commend] {

    "value": ""
}

你真的有必要用这个吗?

代数

注:需要代入ID的指令不建议单独使用,最好用黑魔法提取器提取再使用

设定开关

@[set_switch] [

    "name",
    "value"

]

反转开关

@[toggle_switch] {

	"switchId": null

}

设定变量

@[set_variable] [

    "name",
    "value"

]

増减変量

@[add_variable] {
  
    "varId": null,
    "varValue": 0
  
}

储存物件位置

@[save_event_pos] {
  
    "target": null,
    "x": null,
    "y": null
  
}

官方示例:

@[save_event_pos] {
"target":"魔法傀儡",
"x":"傀儡x",
"y":"傀儡y"
}

条件

该页面展示的黑魔法均为在游戏内插入后的默认参数

条件判断 #if

根据条件表达式的结果决定是否执行内部的指令序列。

类型一:变量条件 type: "var"

对变量的数值进行比较判断。

@[if] {
  "type": "var",
  "varOption": {
    "varId": "变量ID",
    "operation": "==",
    "varValue": 0
  }
}

参数说明:

参数说明可选值
type条件类型"var"
varOption.varId变量ID字符串形式的ID
varOption.operation比较操作符==(等于)、!=(不等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)
varOption.varValue比较的数值数字

示例:

@[if] {
  "type": "var",
  "varOption": {
    "varId": "score",
    "operation": ">=",
    "varValue": 100
  }
}

类型二:开关条件 type: "switch"

对开关(布尔)变量进行判断。

@[if] {
  "type": "switch",
  "switchOption": {
    "varId": "开关ID",
    "operation": "==",
    "varValue": false
  }
}

参数说明:

参数说明可选值
type条件类型"switch"
switchOption.varId开关ID字符串形式的ID
switchOption.operation比较操作符==(等于)、!=(不等于)
switchOption.varValue比较的布尔值true / false

示例:

@[if] {
  "type": "switch",
  "switchOption": {
    "varId": "door_open",
    "operation": "==",
    "varValue": true
  }
}

省略写法(待补充)

使用简短的表达式语法,直接在双引号内写条件表达式:

@[if] "条件表达式"

表达式语法(已验证):

  • 变量引用:v:变量名
  • 比较操作符:已验证支持 ><>=<===
  • 逻辑运算符:&&(并且)在部分情况下可用
  • 逻辑运算符:||(或者)在部分情况下可用

表达式语法(未验证/存在问题):

  • 比较操作符:!=(不等于)- 测试无输出
  • 括号:() 用于分组 - 测试时同时输出 true 和 false(存在问题)

官方示例:

@[if] "v:傀儡x>16&&v:傀儡y<9"

已验证的示例:

@[if] "v:变量A>0"

@[if] "v:变量A>=3"

@[if] "v:变量A==3"

// 部分场景有效
@[if] "v:变量A>0&&v:变量B<10"

// 部分场景有效
@[if] "v:变量A>5||v:变量B>10"

未验证/存在问题的示例:

// 不等于
@[if] "v:变量A!=3"

// 括号分组
@[if] "(v:变量A>0&&v:变量A<10)||(v:变量B>0&&v:变量B<10)"

希望有大佬测试并补充。

随机条件 #if_random

随机决定是否执行后续指令。

@[if_random]

使用示例:

@[if_random]
  // 概率执行的指令
@[end_if]

否则执行 #else

#if 条件不满足时执行的指令序列。

@[else]

结束条件 #end_if

标记条件判断块的结束。

@[end_if]

备注

注释


@[comment] { "" }

特殊事件

名称为非官方命名,请以官方为准

大多事件通过分析关卡 JSON 文件得来

2026/02/24:通过官方发布的黑魔法教学关卡获得了更多指令

2026/02/27:新增大量黑魔法指令,包括物件操作、组操作、精灵动画、音效音乐、地图操作等(感谢 艺素馒头)

2026/03/19、20:通过解包《文字游戏》一代得到大量官方的黑魔法补充(感谢 艺素馒头)

章节目录

无操作指令

无操作指令

类似编程语言中的// do nothingpass,会被解析成## ignore_command。 传入的任何参数都会被忽略,可以当作注释使用。

@[#ignore_command] 

调试指令

调试指令

打印调试

@[print] "字符串"

打印指定字符串到控制台,仅用于调试 purposes。

设置事件参数

设置事件参数

@[set_event_params] {
    
    "target": "物件名称",
    "需要更改的参数": 更改后的参数

}

可以设置指定物件的参数。以下是部分参数的列表。

target 取值:可以是 "self"(该物件本身)、"player"(玩家)或具体的物件名称。

属性名(英文)中文说明类型示例值
text显示的文字内容字符串"新文字"
hasBackground是否有背景框布尔值true / false
opacity透明度(0~1)数字0.5
eventTriggerAction触发方式字符串游戏开始后"auto" / 玩家调查后"press" / 玩家触碰后"touch" / 被物件触发"trigger"
existCondition触发条件字符串"s:switch_name_触发物件==true"
isOnTopOfPlayer是否显示在角色上方布尔值true
visible是否可见布尔值true / false

备注

  • text 参数仅适用于单个字符(一个字)的情况。
  • visible 设置为 false 可以让物件消失。

存在的问题(暂不清楚是否修复):

  • 更改字面后物件会移动至背景,修改层级参数无效。
  • 无法修改位置,可以用传送器代替。
  • 无法修改物件是否可以被推删拆组。

添加到组

添加到组

@[add_to_group] {

    "target":"物件名称",
    "group":"组名"

}

补充说明: "group"|string| 特殊组名:cn_text:后接着的第一个字是物件字面中要替换的字,第二个字是简体字下的字。

组操作

组操作

组内淡入淡出

配合“添加到组“功能使用,让组内所有物件淡入淡出。

@[fade_group] {
    "group": "组名",
    "opacity": 0,
    "time_sec": 1
}

参数说明

  • group:组名。
  • opacity:目标透明度(0~1)。
  • time_sec:动画持续时间(秒)。

溶解组

溶解组内的所有物件,配合打字机 tags。

@[dissolve_group] {"group": "组名"}

从组中删除

将指定物件从组中移除。

@[remove_from_group] {
    "target": "物件名称",
    "group": "组名"
}

物件操作

物件操作

删除物件

从关卡内直接删除指定的物件。

@[remove_event] {
    "target": "物件名称"
}

target 取值:可以是 "self"(该物件本身)、"player"(玩家)或具体的物件名称。

让物件不存在

效果和删除物件相近,让指定物件从场景中变为不存在状态。

@[unexist_event] {
    "target": "物件名称"
}

崩塌物件

让指定物件触发垮塌动画效果。

@[crash_event] {
    "target": "物件名称"
}

物件回溯

将指定的物件回溯到游戏前原来的位置,并且让它重新执行事件。如果触发模式为“游戏开始后“的话,无法回溯被删除和被溶解的状态,也不会回溯透明度。

@[refresh_event] {
    "target": "物件名称"
}

物件锁定

锁定指定的物件,使其无法被移动或触发。 (可能官方没有做完,暂时无法生效)

@[lock_event] {
    "target": "物件名称",
    "lock": true
}

物件克隆

指定一个物件作为母物件,克隆出来的物件会继承母物件的所有属性。所有选项都不是必填项,如果不传任何参数,物件会在自己的位置克隆自己。

@[clone_event] {
    "target": "物件名称",
    "position": [X, Y],
    "text": "字面"
}

参数说明

  • target:要克隆的母物件名称,可选。
  • position:克隆后的位置坐标,可选。
  • text:克隆后显示的文字内容,可选。

创建物件

凭空创建一个新物件。理论上可传入多数属性,但创建出来的物件通常没有碰撞体。

@[create_event] {
    "text": "字面",
    "pos": [X, Y],
    "tags": "[]",
    "name": "物件名称",
    "layer": "mid"
}

参数说明

  • text:物件显示文字。
  • pos:物件生成位置坐标。
  • tags:物件标签字符串。
  • name:物件名称。
  • layer:所在图层(如 mid)。

强制删字

强制删字

播放删字动画

@[play_backspace_fail_animation]

播放删字的动画效果。

删字事件

@[backspace_event] {"target": "self"}

对指定物件执行删字。

示例序列

@[play_backspace_fail_animation]
@[wait] 60
@[backspace_event] {"target": "self"}

这段脚本会先播放删字动画,等待 1.2 秒,然后对自身执行删字操作。

移动

移动

开始移动

@[move_route] {

    "target": "物件名称",
    "wait": true

}

补充说明: "wait"|boolean|是否阻塞式执行。若为true,则脚本会暂停,直到移动动作完成。

为指定角色执行一个或多个移动/控制指令,并可选择是否阻塞后续脚本执行。需要与@[end_move_route]配合使用。 @[move_route]本身不直接执行动作,而是包裹一组移动指令。

停止移动


@[end_move_route]

移动控制指令

以下指令可以在 @[move_route]@[end_move_route] 之间使用,控制物件的移动行为。

指令参数说明示例
@[set_through]true / false设置穿透状态,当为 true 时物件移动不会产生碰撞@[set_through] true
@[move_up]向上移动一格@[move_up]
@[move_down]向下移动一格@[move_down]
@[move_left]向左移动一格@[move_left]
@[move_right]向右移动一格@[move_right]
@[move_straight]2 / 4 / 6 / 8按方向码直线移动一格(2=↓, 4=←, 6=→, 8=↑@[move_straight] 2
@[move_random]随机方向移动一格@[move_random]
@[move_toward_player]向玩家方向移动一格@[move_toward_player]
@[move_toward_event]"目标物件名称"向指定物件移动一格@[move_toward_event] "目标"
@[jump][x, y](相对坐标)向相对坐标跳跃,xy 为整数@[jump] [1,0](向右一格)
@[jump_to_point][x, y](绝对坐标)跳跃到地图上的指定坐标@[jump_to_point] [15,8]
@[jump_random]随机跳跃到上下左右一格@[jump_random]
@[move_to_event]"目标物件名称"直接移动到指定物件的位置@[move_to_event] "目标"
@[move_to_point][x, y](绝对坐标)移动到地图上的指定坐标@[move_to_point] [15,8]
@[move_straight_to_point][x, y](绝对坐标)直线移动到目标点,不会拐弯(即使碰到墙也不会绕路)@[move_straight_to_point] [15,8]

额外的,这些虽然不是移动指令,但也可以加在这之间使用。

指令参数说明示例
@[set_move_speed]整数设置物件移动速度@[set_move_speed] 1
@[wait]数字等待指定时长(若 "wait": false 则不会阻塞)@[wait] 30
@[wait_random_in_range][min, max]随机等待一个时长区间(若 "wait": false 则不会阻塞)@[wait_random_in_range] [1,10]
@[set_switch]["name", "value"]设置开关值@[set_switch] ["开关A", true]
@[set_variable]["name", "value"]设置变量值@[set_variable] ["变量B", 114514]
@[toggle_switch]{"switchId": null}切换指定开关状态@[toggle_switch] {"switchId": null}
@[add_variable]{"varId": null, "varValue": 0}给变量增加数值@[add_variable] {"varId": null, "varValue": 1}
@[play_se]{"path":"...","db":0,"pan":0}播放音效@[play_se] {"path":"res://Sounds/...","db":0,"pan":0}
@[queue_free]销毁当前物件@[queue_free]
@[set_visible]true / false设置该物件是否可见@[set_visible] false
@[fade_to]{"opacity":1,"time_sec":1}淡入淡出到指定透明度@[fade_to] {"opacity":1,"time_sec":1}
@[set_dead_zone][x1, y1, x2, y2] 或不填设置死区;不指定参数可视为取消@[set_dead_zone] [0,0,31,17]
@[set_move_zone][x1, y1, x2, y2] 或不填设置移动区域;不指定参数可视为取消@[set_move_zone] [14,7,17,10]
@[set_z_index]数字设置物件显示优先级@[set_z_index] 1
@[set_can_pass_group]"组名"允许该物件可通过包含在组里的物件@[set_can_pass_group] "组A"

示例:用黑魔法来让物件↑↑↓↓←→←→

@[move_route] {"target": "物件A","wait": true}
@[move_up]
@[move_up]
@[move_down]
@[move_down]
@[move_left]
@[move_right]
@[move_left]
@[move_right]
@[end_move_route]

通过这个能让黑魔法编辑移动更为便捷,不需要为每个移动指令都单独指定物件。

循环移动路径

用于为物件设置一个循环执行的移动路线,物件会自动重复执行指定的移动指令序列。

@[set_event_loop_move_route] {

    "target": "物件名称",
    "loop_move_route": "[...]"

}

参数说明:

  • target:目标物件的名称。
  • loop_move_route:一个 JSON 数组,包含一系列移动指令对象。每个指令对象格式为 {"command":"指令名称", "parameters":[参数]}

支持的指令与“移动控制指令”相同,例如 move_upmove_random 等,还可以使用 set_move_zone 来限定移动范围。

示例:

  1. 简单矩形循环:让物件按上→右→下→左的顺序循环移动。
@[set_event_loop_move_route] {

    "target": "物件A",
    "loop_move_route": "[
{\"command\":\"move_up\"},
{\"command\":\"move_right\"},
{\"command\":\"move_down\"},
{\"command\":\"move_left\"}
]"

}
  1. 范围内随机移动:将物件的移动范围限定在指定矩形区域内,然后执行随机移动。
@[set_event_loop_move_route] {

    "target": "物件A",
    "loop_move_route": "[
{\"command\":\"set_move_zone\", \"parameters\":[14, 7, 17, 10]},
{\"command\":\"move_random\"}
]"

}

其中 set_move_zone 的参数为 [左上角x, 左上角y, 右下角x, 右下角y],坐标单位为格子。

  1. 停止循环路径:将移动范围设置为全地图(或足够大的区域),使物件可以自由移动(实际上相当于取消限定范围)。
@[set_event_loop_move_route] {

    "target": "物件A",
    "loop_move_route": "[{\"command\":\"set_move_zone\", \"parameters\":[0,0,31,17]}]"

}

注意:

  • 循环移动路径会一直重复执行,直到被新的 set_event_loop_move_route 覆盖或物件被移除。
  • 该指令不需要放在 @[move_route]@[end_move_route] 之间,它是一个独立的事件。

位移补间动画

位移补间动画

用于平滑过渡物件参数的动画指令,可以控制位置、透明度、缩放等属性的变化。

@[tween_parameter] {
    "target": "物件名称",
    "parameter": "参数路径",
    "add": 0,
    "time_sec": 1,
    "transition_type": "TRANS_LINEAR",
    "ease_type": "EASE_IN",
    "wait": false
}

参数说明

参数名类型说明可选值示例
target字符串目标物件的名称任意有效物件名"物件A"
parameter字符串要补间的参数路径,支持 position:xposition:yopacityscale:xscale:y取决于物件支持的参数"position:y"
add数字相对增加值,与当前值相加得到目标值。与 value 二选一。任意数字-120
value数字绝对目标值,直接设置参数到该值。与 add 二选一。任意数字300
time_sec数字动画持续时间(秒)正数0.5
transition_type字符串过渡曲线类型TRANS_LINEARTRANS_SINETRANS_QUINT"TRANS_SINE"
ease_type字符串缓动方向EASE_INEASE_OUTEASE_IN_OUTEASE_OUT_IN"EASE_OUT"
wait布尔值是否阻塞式执行(等待动画完成才继续执行后续指令)true / falsetrue

注意事项

  • 若同时指定 addvalue,优先使用 value
  • transition_typeease_type 组合可产生丰富的动画效果,具体效果需在游戏中实测。
  • wait: true 时,脚本会暂停直到动画完成;wait: false 时,动画在后台播放,脚本继续执行。
  • 如果补间类型不是线性,千万不要把时间填0,不然游戏就会一直除以0卡死。

停止位移补间动画

用于中断当前正在执行的 @[tween_parameter] 动画。

@[stop_tween_parameter]

示例

上下弹跳效果

@[tween_parameter] {
    "target": "物件A",
    "parameter": "position:y",
    "add": -120,
    "time_sec": 0.5,
    "transition_type": "TRANS_SINE",
    "ease_type": "EASE_OUT",
    "wait": true
}

@[tween_parameter] {
    "target": "物件A",
    "parameter": "position:y",
    "add": 120,
    "time_sec": 0.5,
    "transition_type": "TRANS_SINE",
    "ease_type": "EASE_IN",
    "wait": true
}

这两个指令先后执行,会让物件先向上移动 120 像素(缓出),再向下移动 120 像素(缓入),形成弹跳感。

淡出并缩小

@[tween_parameter] {
    "target": "物件B",
    "parameter": "opacity",
    "value": 0,
    "time_sec": 1,
    "transition_type": "TRANS_QUINT",
    "ease_type": "EASE_OUT",
    "wait": false
}
@[tween_parameter] {
    "target": "物件B",
    "parameter": "scale:x",
    "value": 0.5,
    "time_sec": 1,
    "transition_type": "TRANS_QUINT",
    "ease_type": "EASE_OUT",
    "wait": false
}

同时淡出并横向缩小,不阻塞脚本。

成句动画

成句动画

用于播放成句判定动画的事件。

@[sentence_legal_animation] {
    "pos": [15,8], ## 动画起始位置坐标 [x, y]
    "text_count": 3, ## 共几个字
    "is_h": false, ## 是否为横向
    "sectence_width": 2, ## 断句长度
    "progress": -1, ## 0~5,不同音效,0代表完成,-1为错误,-2为彩蛋
    "level": 5 ## 5的时候会全屏幕闪
}

参数说明

参数名类型说明示例值
pos数组动画起始位置坐标 [x, y][15,8]
text_count整数句子中的字数3
is_h布尔值是否为横向排列false
sectence_width整数断句长度(每行字数)2
progress整数进度等级:0~5 对应不同音效,0 表示完成,-1 表示错误,-2 表示彩蛋-1
level整数动画强度级别,5 时全屏幕闪烁5

精灵动画

精灵动画

播放一次性动画

播放指定物件的一次性动画,播放完成后自动停止。

@[play_sprite_animation] {
    "target": "物件名称",
    "path": "anim_001.png",
    "frame_count": 30,
    "time_sec": 1,
    "reverse": false,
    "wait": false
}

参数说明

  • target:目标物件名称。
  • path:动画资源路径。
  • frame_count:播放帧数。
  • time_sec:播放时间(秒)。
  • reverse:是否倒序播放,可选,默认为 false
  • wait:是否等待动画完成,可选,默认为 false

播放循环动画

播放指定物件的循环动画,会无限循环播放。

@[set_loop_sprite_animation] {
    "target": "物件名称",
    "path": "",
    "frame_count": 30,
    "time_sec": 1,
    "keyframes": []
}

参数说明

  • target:目标物件名称。
  • path:动画资源路径。
  • frame_count:播放帧数。
  • time_sec:播放时间(秒)。
  • keyframes:关键帧数组,在指定帧执行命令,可选。

取消物件动画

停止指定物件的当前动画。

@[clear_sprite_animation] {
    "target": "物件名称"
}

补间动画

对物件进行补间动画,控制位置和旋转变化。

@[tween_word_sprite] {
    "target": "物件名称",
    "position": [X, Y],
    "rotation": 0,
    "time_sec": 1
}

参数说明

  • target:目标物件名称。
  • position:目标位置坐标,坐标单位为 90 像素一格。
  • rotation:旋转角度,可选。
  • time_sec:动画持续时间(秒)。

物件颤抖

让物件在一段时间内反复抖动。常见于剧情演出场景。

@[shake_event] {
    "frame": 300,
    "distance": 10
}

参数说明

  • frame:震动持续帧数。
  • distance:每次震动的移动距离。

音效

音效

播放音效

在当前位置播放指定的音效文件。

@[play_se] {
    "path": "res://Sounds/...",
    "db": 0,
    "pan": 0
}

参数说明

  • path:音效文件路径(对应一代,如开门音效:res://Sounds/se/door_open_1.wav,参考:隐藏音频路径索引)。
  • db:音量大小,可选,默认值为 0。
  • pan:声道平衡,负数为左声道,正数为右声道,可选,默认值为 0。

在目标位置播放音效

在指定物件的位置播放音效,适合用于 3D 空间音效效果。

@[play_se_with_position] {
	"target": "物件名称", 
	"path": "res://Sounds/se/sword_swing_fail_1.wav",
	"loop": false,
	"max_dist": 800
}

参数说明

  • target:目标物件名称,音效将从该物件位置播放。
  • path:音频路径(参考:隐藏音频路径索引)。
  • loop:是否保持循环,true 为循环,否则只播放一次。
  • max_dist:声音传播距离。

音乐

音乐

播放音乐

播放指定的背景音乐。

@[play_bgm] {
    "path": "音频路径",
    "db": 0,
    "pan": 0
}

参数说明

  • path:音频文件路径(参考:隐藏音频路径索引)。
  • db:音量大小,可选,默认值为 0。
  • pan:声道平衡,负数为左声道,正数为右声道,可选,默认值为 0。

改变音乐

切换当前播放的背景音乐。

@[change_bgm] {
    "has_bgm": false,
    "path": "音频路径"
}

参数说明

  • has_bgm:是否有背景音乐,设为 false 可停止当前音乐。
  • path:音频文件路径,可选(参考:隐藏音频路径索引)。

音乐淡入

音乐淡入播放。

@[fade_in_bgm] 1

参数为淡入持续时间(秒)。

音乐淡出

音乐淡出停止。

@[fade_out_bgm] 1

参数为淡出持续时间(秒)。

停止音乐

停止当前播放的背景音乐。

@[stop_bgm]

环境音

环境音

播放环境音

播放指定的环境音效。

@[play_env] {
    "path": "路径",
    "db": 0,
    "pan": 0
}

参数说明

  • path:环境音文件路径(参考:隐藏音频路径索引)。
  • db:音量大小,可选,默认值为 0。
  • pan:声道平衡,负数为左声道,正数为右声道,可选,默认值为 0。

改变环境音

切换当前播放的环境音。

@[change_env] {
    "has_bgm": false,
    "path": "音频路径"
}

参数说明

  • has_bgm:是否有环境音,设为 false 可停止当前环境音。
  • path:音频文件路径,可选(参考:隐藏音频路径索引)。

环境音淡入

环境音淡入播放。

@[fade_in_env] 1

参数为淡入持续时间(秒)。

环境音淡出

环境音淡出停止。

@[fade_out_env] 1

参数为淡出持续时间(秒)。

停止环境音

停止当前播放的环境音。

@[stop_env]

设置地图环境音

为指定地图设置环境音与过渡方式。

@[set_map_env] {
    "map": "地图名",
    "has_bgm": true,
    "bgm_path": "res://Sounds/bgm/ch1/BGM_title.ogg",
    "bgm_transition_type": "fade"
}

参数说明

  • map:要设置的地图名称。
  • has_bgm:是否启用该地图环境音开关(字段名沿用事件参数原文)。
  • bgm_path:环境音资源路径(字段名沿用事件参数原文)。
  • bgm_transition_type:切换方式,常见为 "fade"(淡入淡出)。

地图操作

地图操作

更换地图

切换到指定的地图。

@[map_transport] {
    "map": "地图名称",
    "pos": [X, Y],
    "need_to_save_map_status": false,
    "transition_type": "fade",
    "opacity": 255
}

参数说明

  • map:目标地图名称。
  • pos:目标位置坐标 [X, Y]。
  • need_to_save_map_status:是否保存地图状态,可选,默认值为 false
  • transition_type:过渡类型,可选:
    • "fade":淡入淡出
    • "whirl":安度药水(漩涡效果)
    • "none":无过渡效果
  • opacity:过渡不透明度,可选,范围 0~255。

更换地板类型

更改当前地图的地板材质。

@[change_floor_type] {"type": "default"}

type 取值(以下均已测试):

  • "default":默认。
  • "wood":木材(常见于房间内,听感偏闷,像在牛皮上行走)。
  • "dirt":泥土(常见于家外户外区域,偶尔会混入键盘或木头的脚步声)。
  • "pavement":铺路石(集市常见,普通石质脚步声)。
  • "cave":洞穴(清脆并带少量回音)。
  • "grass":草地。
  • "pavement2":铺路石第二版(较 pavement 更轻)。
  • "ruin":废墟(听感像在淤泥中行走)。
  • "marble":大理石(实际听感更接近闷木头声)。
  • "snow":雪地。
  • "riverside":河边(沙子混水感)。
  • "goose":鹅(类似鹅脚蹼走路的声音)。
  • "swim":水中移动音效。
  • "ruin2":废墟第二版(像踩在砂砾上)。
  • "abstract":抽象(像纸张混合沙粒摩擦)。
  • "snow_thick":厚雪(更重、更拖长的雪地脚步声)。
  • "stone_stair":石阶(最接近典型石头脚步声)。
  • "carpet":地毯(很轻的脚步声)。
  • "garden":花园(类似草地但更柔和)。
  • "dragon_back":龙背(偏金属质感)。
  • "no_word":无文字(像踩乐高积木)。

区域功能

将当前阶段名称改为参数中的区域名,并可自动保存。 在一代中主要用于阶段标记,方便确认当前属于哪个阶段。

@[enter_section] {
  "section_name": "区域名称",
  "need_save": false
}

参数说明

  • section_name:区域/阶段名称,可使用 1-11-0 等格式进行区分。
  • need_save:是否自动保存,可选,默认值为 true

设置地图 BGM

为指定地图设置背景音乐与过渡方式。

@[set_map_bgm] {
  "map": "地图名",
  "has_bgm": true,
  "bgm_path": "res://Sounds/bgm/ch1/BGM_title.ogg",
  "bgm_transition_type": "fade"
}

参数说明

  • map:要设置的地图名称。
  • has_bgm:是否启用该地图 BGM。
  • bgm_path:BGM 资源路径。
  • bgm_transition_type:切换方式,常见为 "fade"(淡入淡出)。

游戏机制

游戏机制

取消拆字规则

删除指定拆字规则。

@[delete_split_rule] {"from": ["拆"], "to": "手,斥"}

取消组字规则

删除指定组字规则。

@[delete_merge_rule] {"from": "系,且", "to": "组"}

取消全部拆字规则

清空当前已宣告的全部拆字规则。

@[clear_split_rule]

取消全部组字规则

清空当前已宣告的全部组字规则。

@[clear_merge_rule]

设置拆字规则并取消之前的拆字规则

先清空旧拆字规则,再设置新的拆字规则。

@[set_split_rule] {"from": ["拆"], "to": "手,斥"}

设置组字规则并取消之前的组字规则

先清空旧组字规则,再设置新的组字规则。

@[set_merge_rule] {"from": "系,且", "to": "组"}

获取用户当前使用的是简体还是繁体语言

用于读取当前用户语言是否为繁体中文。

@[get_is_user_lang_tc] {"switch": "开关"}

获取用户的简体辅助开关

用于读取当前是否开启简体辅助。

@[get_is_simplified] {"switch": "当前是否开启简体辅助"}

子事件

子事件

定义子事件

@[sub_event]@[end_sub_event] 成对出现。

@[sub_event] "字面"

(此处编写其他指令)

@[end_sub_event]

@[sub_event]@[end_sub_event] 中间的指令会被添加进该子事件。

触发逻辑

可以把它理解为“检测指定字面的 if 条件”:

  • 当玩家位置与朝向正好面对这个指定字面时,条件为 true。
  • 此时若主物件被触发,就会执行对应的子事件。

游戏会在物件碰撞生成时构建子事件逻辑,子事件的触发位置是该物件内所有“指定字面”的位置。

例如指定字面是“木”,那么该物件里所有“木”的坐标都可作为子事件触发点。可用于实现“单个物件不同位置触发不同事件”的效果。

示例

下面示例中,当“我”在携带 @[sub_event] 的物件字面“人”附近并朝向“人”时,该物件若被触发,会在 [0, 0] 坐标打出“你好,世界!”。

你好,世界!

树树树 
树树人←我
树树树

@[sub_event] "人"

@[type_parallel] {
    "texts": "你好,世界!",
    "pos": [0, 0],
    "tags": [],
}

@[end_sub_event]

删字触发块

@[backspace_command]@[end_backspace_command] 成对出现。

@[backspace_command]
    ..里面填入魔法
@[end_backspace_command]

用于处理“玩家对该物件执行删字”这一触发场景。

当块内存在 @[play_backspace_fail_animation]@[backspace_event] 时,会阻止玩家本次直接删字,并转由物件自身继续执行块内后续指令。

常见配合:

@[backspace_command]

@[play_backspace_fail_animation]
@[backspace_event] {"target": "self"}

@[end_backspace_command]

这种写法可实现“检测到删字后先反馈动画,再由物件自行处理删字/后续逻辑”。

系统

系统

返回标题界面

直接退出当前流程并返回标题界面。

@[return_to_title_screen]

直接退出游戏

快速关闭游戏流程。

@[quit_game]

设置成就完成

将指定成就状态设为已完成。

@[set_achievement]

清除成就完成状态

将指定成就状态清除为未完成。

@[clear_achievement]

一代限定

一代限定

本章收录主要在一代使用、在二代中基本无效或无实际用途的指令。

设置物件自开关

在关卡文件里,每个物件都有一个 existCondition 属性。这个属性用于检测条件是否成立,成立后才会允许该物件执行。

existCondition 示例:

"existCondition": "s:开关==true && self:auto==false"

其中 self 指自开关,后面接开关名称。

@[set_self_switch] ["开关名称", true]

一代中,这个魔法通常用于“开始时执行”的物件;很多开始时执行物件会带上 self:auto==false,避免重复触发。

二代中经测试似乎没有效果,建议按需自行验证。

调用全局方法

@[call_method] {
    "target": "Global",
    "target_type": "path",
    "method": "set_chapter_progress",
    "arg_array": [1]
}

这个写法在一代中主要用于调用引擎侧的全局方法。以上示例的含义是:调用 Global.set_chapter_progress(1),将章节进度设置为 1

注意事项:

  • 该指令属于一代引擎通信用途,通常只在一代有效。二代绝大多数情况下不会产生实际效果。

’他’字的拆组动画触发

只是播放这个字的动画,推测是在一代使用的,二代可正常使用,但用途相对较窄。

拆他动画

在目标物件位置播放“拆他”动画。

@[unzip_animation] {
    "target": "物件名称"
}

组他动画

在目标物件位置播放“组他”动画。

@[zip_animation] {
    "target": "物件名称"
}

如何将变量代入参数

由 Qwen3 优化了语法和格式,内容已经过验证。

在《文字游戏世界》中,开发者可以通过变量代入语法将游戏运行时的动态数据(如变量值、开关状态等)嵌入到事件参数中,从而实现内容的动态化与交互性。本文档详细说明变量与开关的代入方法、适用范围及注意事项。


1. 基本语法

《文字游戏世界》使用前缀标识符来区分不同类型的动态数据:

  • 变量(Variable):使用 v:变量名
  • 开关(Switch):使用 s:开关名

这些标识符可直接作为参数值写入事件配置中,引擎将在运行时自动解析并替换为实际值。

注意:变量名与开关名需与项目中定义的名称完全一致(包括大小写与空格)。


2. 应用示例

2.1 修改位置参数(pos

假设已定义一个名为 变量X 的数值变量,希望打字机事件的 X 坐标动态跟随该变量值:

"pos": [
  "v:变量X",
  0
]

此时,打字机文本的水平位置将实时反映 变量X 的当前数值。

2.2 控制遮挡逻辑(is_on_top_of_player

若希望打字机是否遮挡玩家由名为 开关Y 的布尔开关控制:

"is_on_top_of_player": "s:开关Y"

开关Y开启(true) 时,打字机文本将显示在角色上方;关闭(false)时则不会遮挡。

2.3 动态显示文本内容(texts

重要限制:打字机的 texts 字段不支持字符串拼接。若要显示变量或开关的值,texts 必须完全等于一个变量或开关的引用,不能包含其他静态文本。

✅ 正确用法:

"texts": "v:变量X"

"texts": "s:开关Y"

❌ 错误用法(不会按预期工作):

"texts": "当前分数:v:变量X"  // 静态文本 + 变量 → 只显示变量

替代方案:如需组合静态文本与动态值,建议使用多个打字事件;或是与固定物件拼接而成。


相关文档

打字机的高级用法

1. 利用延迟符号实现无阻塞延迟

来自「艺素馒头」

在打字机中,符号「|」具有延迟效果(每个「|」约产生 0.1 秒的停顿)。
你可以利用这一特性,实现无阻塞的延迟效果——即在不强制玩家等待或确认的情况下,让文本按节奏自动呈现。

实现方法如下:

  1. 在打字机事件文本中连续插入多个「|」符号(例如 20 个),再附加一个任意字符(如「s」)作为触发标记,例如:

    ||||||||||||||||||||s
    
  2. 设置一条成句规则,将末尾的「s」设为一个成句。

这样,系统会在延迟结束后自动识别整句成立,从而触发后续逻辑,而玩家无需确认或等待。


相关文档

实用指令集

感谢:艺素馒头 (由解包《文字游戏》一代而得)

目录

模板一:开门(无需额外动画物件)

用途

用于门物件的开门过场。该写法不需要单独放置动画物件。

前提

  • 门物件图层位于玩家下方。
  • 在本段指令后接上你自己的切换地图逻辑。

完整指令块

@[play_se] {"path":"res://Sounds/se/第一章 音效/SE_1_3_door_open.wav"}
@[play_sprite_animation] {"frame_count":30,"path":"res://Sprites/door/door_open.png","time_sec":1}
@[wait] 10
@[move_route] {"target":"Player","wait":true}
@[set_through] true
@[move_to_event] "门"
@[set_through] false
@[end_move_route]
@[event_fade_to] {"target":"Player"}
@[wait] 60

模板二:无需玩家操控的推字

用途

自动推动指定物件,并播放推字动画与音效。

可调参数

  • "pos": [5,5]:改为被推动物件当前坐标。
  • push_low_1.wav 中的数字可改为 1-4,切换不同推字音效。
  • rotation 方向参考:
    • 向右:0
    • 向下:90
    • 向左:180
    • 向上:-90

完整指令块

@[type] {
    "texts": "动{'name':'推字动画','tags': ['动画']}",
    "pos": [5,5],
    "tags": ["推字"],
    "has_animation": false,
    "need_accept": false
}
@[move_route] {"target":"被推的物件","wait":false}
@[move_down]
@[end_move_route]
@[play_se] {"path":"res://Sounds/se/push_low_1.wav"}
@[tween_word_sprite] {
    "target": "推字动画",
    "position": [32, 80],
    "rotation": 90,
    "time_sec": 0
}
@[play_sprite_animation] {
    "target": "推字动画",
    "frame_count": 15,
    "path": "res://Sprites/glove_push/u_glove_S.png",
    "time_sec": 0.5
}
@[clear_typed] "推字"

隐藏音频路径索引

感谢:艺素馒头 说明:

  • 以下仅包含《文字游戏世界》中无法直接在事件里找到的音频路径。
  • 示例以“名称 + 路径”格式给出,便于查阅与复制使用。

隐藏 SE 音频路径

##  以下是文字游戏世界隐藏的所有se音频的路径:
##  仅包含文字游戏世界无法直接在事件里找到的音频

se_未知UI音效
res://Sounds/se/MEL/MEL_4_4_success.wav

se_在文字游戏最后一章被黑洞吞噬后找伙伴的音效
res://Sounds/se/MEL/MEL_4_21_word_join.wav

se_擦除的音效
res://Sounds/se/MEL/MEL_4_21_word_leave.wav

se_成句音效但是鸭子叫
res://Sounds/se/MEL/MEL_Iegal_egg_1.wav

se_成句音效但是更笨拙
res://Sounds/se/MEL/MEL_Iegal_egg_2.wav

se_成句音效但是彩蛋
res://Sounds/se/MEL/MEL_Iegal_egg_3.wav

se_成句音效但是坏的
res://Sounds/se/MEL/MEL_Iegal_egg_4.wav

se_成句音效但是只有开头两个音
res://Sounds/se/MEL/MEL_Iegal_wrong.wav

se_像成句但又不像,反正就是很吵[护耳警告],敲锣声
res://Sounds/se/MEL/SFX_Legal Answer_NoMelo.wav

se_也是敲锣声但更轻
res://Sounds/se/MEL/SFX_process_noMelo_1.wav

se_清脆的敲锣声
res://Sounds/se/MEL/SFX_process_noMelo_2.wav

se_普通的敲锣声
res://Sounds/se/MEL/SFX_process_noMelo_3.wav

se_折起纸张
res://Sounds/se/power/SE_human_leave.wav

se_扔掉纸张_1
res://Sounds/se/power/SE_human_merge_1.wav

se_扔掉纸张_2
res://Sounds/se/power/SE_human_merge_2.wav

se_扔掉纸张_3
res://Sounds/se/power/SE_human_merge_3.wav

se_拆字失败音效
res://Sounds/se/power/SE_S_19.3_pull_fail.wav

se_打开怀表音效
res://Sounds/se/system/SE_S_25_cancel.wav

se_打开沉思[esc]音效
res://Sounds/se/system/SE_S_29_thought_A.wav

se_切换外观_连线中
res://Sounds/se/system/SE_S_26_adjust_A.wav

se_叮
res://Sounds/se/typewriter/Bell中音.wav

se_打字机诗人音效_A
res://Sounds/se/typewriter/SE_S_14_type_poet_A.wav

se_打字机诗人音效_B
res://Sounds/se/typewriter/SE_S_14_type_poet_B.wav

se_打字机诗人音效_C
res://Sounds/se/typewriter/SE_S_14_type_poet_B.wav

se_打字机诗人音效_D
res://Sounds/se/typewriter/SE_S_14_type_poet_B.wav

se_打字机公主音效_A
res://Sounds/se/typewriter/SE_S_15_type_princess_A.wav

se_打字机公主音效_B
res://Sounds/se/typewriter/SE_S_15_type_princess_B.wav

se_打字机公主音效_C
res://Sounds/se/typewriter/SE_S_15_type_princess_C.wav

se_打字机公主音效_D
res://Sounds/se/typewriter/SE_S_15_type_princess_D.wav

se_打字机公主音效_F
res://Sounds/se/typewriter/SE_S_15_type_princess_F.wav

se_打字机公主音效_G
res://Sounds/se/typewriter/SE_S_15_type_princess_G.wav

se_打字机公主音效_H
res://Sounds/se/typewriter/SE_S_15_type_princess_H.wav

se_打字机轻柔公主音效_A
res://Sounds/se/typewriter/SE_S_15_type_可能適合princess_輕柔A.wav

se_打字机轻柔公主音效_B
res://Sounds/se/typewriter/SE_S_15_type_可能適合princess_輕柔B.wav

se_打字机轻柔公主音效_C
res://Sounds/se/typewriter/SE_S_15_type_可能適合princess_輕柔C.wav

se_打字机轻柔公主音效_D
res://Sounds/se/typewriter/SE_S_15_type_可能適合princess_輕柔D.wav

se_打字机轻柔公主音效_G
res://Sounds/se/typewriter/SE_S_15_type_可能適合princess_輕柔G.wav

se_打字机龙音效_A
res://Sounds/se/typewriter/SE_S_16_type_dragon_A.wav

se_打字机龙音效_B
res://Sounds/se/typewriter/SE_S_16_type_dragon_B.wav

se_打字机龙音效_C
res://Sounds/se/typewriter/SE_S_16_type_dragon_C.wav

se_打字机龙音效_D
res://Sounds/se/typewriter/SE_S_16_type_dragon_D.wav

se_打字机蛇妖音效_A
res://Sounds/se/typewriter/type_snake_A.wav

se_打字机蛇妖音效_B
res://Sounds/se/typewriter/type_snake_B.wav

se_打字机蛇妖音效_C
res://Sounds/se/typewriter/type_snake_C.wav

se_鸟叫_1
res://Sounds/se/bird_1.wav

se_鸟叫_2
res://Sounds/se/bird_2.wav

se_鸟叫_3
res://Sounds/se/bird_3.wav

se_狗叫1
res://Sounds/se/dog_bark_1.wav

se_狗叫2
res://Sounds/se/dog_bark_2.wav

se_第0章锁门音效
res://Sounds/se/door_lock.wav

se_第0章开门音效
res://Sounds/se/door_open_1.wav

se_每章开头跳字音效
res://Sounds/se/flip_trim_title.wav

se_地震音效_1
res://Sounds/se/giant_step_1.wav

se_地震音效_2
res://Sounds/se/giant_step_2.wav

se_地震音效_3
res://Sounds/se/giant_step_3.wav

se_安度药水瓶子的声音_1
res://Sounds/se/glass_bottle_hold_1.wav

se_安度药水瓶子的声音_2
res://Sounds/se/glass_bottle_hold_2.wav

se_安度药水摔到地上的声音
res://Sounds/se/glass_bottle_pick_1.wav

se_大风
res://Sounds/se/house_recover.wav

se_开锁声
res://Sounds/se/lock_unlock_1.wav

se_成句音效_1
res://Sounds/se/progress_1.wav

se_成句音效_2
res://Sounds/se/progress_2.wav

se_成句音效_3
res://Sounds/se/progress_3.wav

se_成句音效_4
res://Sounds/se/progress_4.wav

se_成句音效_5
res://Sounds/se/progress_5.wav

se_完成成句关卡音效
res://Sounds/se/complete.wav

se_拖字音效_1
res://Sounds/se/pull_1.wav

se_拖字音效_2
res://Sounds/se/pull_2.wav

se_拖字音效_3
res://Sounds/se/pull_3.wav

se_拖字音效_4
res://Sounds/se/pull_4.wav

se_抓住字
res://Sounds/se/pull_grab.wav

se_没抓住字
res://Sounds/se/pull_grab_fail.wav

se_啵
res://Sounds/se/pull_ungrab.wav

se_推字_1
res://Sounds/se/push_low_1.wav

se_推字_2
res://Sounds/se/push_low_2.wav

se_推字_3
res://Sounds/se/push_low_3.wav

se_推字_4
res://Sounds/se/push_low_4.wav

se_墙面裂开
res://Sounds/se/rock_break_1.wav

se_墙皮掉落
res://Sounds/se/rock_break_drop_1.wav

se_史莱姆砸在墙上_1
res://Sounds/se/slime_hit_1.wav

se_史莱姆砸在墙上_2
res://Sounds/se/slime_hit_2.wav

se_史莱姆行走_1
res://Sounds/se/slime_move_1.wav

se_史莱姆行走_2
res://Sounds/se/slime_move_2.wav

se_史莱姆吃东西
res://Sounds/se/slime_tranform_1.wav

se_史莱姆动
res://Sounds/se/slime_vanish_1.wav

se_史莱姆叫
res://Sounds/se/slime_vanish_2.wav

se_玩家死亡
res://Sounds/se/Switch2.wav

se_拔出圣剑
res://Sounds/se/sword_draw_out_1.wav

se_删字_1
res://Sounds/se/sword_swing_1.wav

se_删字_2
res://Sounds/se/sword_swing_2.wav

se_删字_3
res://Sounds/se/sword_swing_3.wav

se_删字失败_1
res://Sounds/se/sword_swing_fail_1.wav

se_删字失败_2
res://Sounds/se/sword_swing_fail_2.wav

se_删字失败_3
res://Sounds/se/sword_swing_fail_3.wav

se_安度药水回溯
res://Sounds/se/twist_long_1.wav

se_主菜单选项确认_1
res://Sounds/se/typerwriter_feedpaper_1.wav

se_主菜单选项确认_2
res://Sounds/se/typerwriter_feedpaper_2.wav

se_打字机确认
res://Sounds/se/typerwriter_return.wav

se_默认打字机声音_1
res://Sounds/se/typer_key_1.wav

se_默认打字机声音_2
res://Sounds/se/typer_key_2.wav

se_默认打字机声音_3
res://Sounds/se/typer_key_3.wav

se_默认打字机声音_4
res://Sounds/se/typer_key_4.wav

se_拆字
res://Sounds/se/unzip_1.wav

se_组字
res://Sounds/se/zip_1.wav

隐藏 BGM 音频路径

##  以下是文字游戏世界隐藏的所有bgm音频的路径:
##  仅包含文字游戏世界无法直接在事件里找到的音频

bgm_⟪文字游戏⟫
res://Sounds/bgm/ch1/BGM_title.ogg

隐藏动画路径索引

感谢:艺素馒头 说明:

  • 以下仅包含《文字游戏世界》中隐藏动画的路径索引。
  • 循环动画会在前面标记 $,一次性动画会在前面标记 #,两个都有表示两种模式都可用。
  • 前面的 frame_count(帧数)必须正确,否则动画会错误;time_sec 会影响播放速度。
  • 动画播放魔法仅支持“每行帧数等于 10”或“总帧数小于 10”的精灵图。

隐藏动画路径

##  以下是文字游戏世界所有动画的路径:
##  循环动画会在前面标记"$",
##  一次性动画则标记"#",
##  静态图片则标记"/",
##  两个都有则是指该动画一次性或循环都可以
## 注意事项:前面是帧数,如果帧数不对动画会错误,后面才是地址,其次播放时间会影响播放速度

##遗憾:动画播放魔法只能播放精灵图每行帧等于10与总帧数小于10的动画,一旦每行帧超过或小于就无法正常播放

$咕咕钟:{"frame_count":5,"path":"res://Sprites/00_clock/clock.png","time_sec":0.5}

$火炉:{"frame_count":24,"path":"res://Sprites/00_stove/stove.png","time_sec":2.4}

#$艾斯走路:{"frame_count":3,"path":"res://Sprites/NPC_walk/u_ace_walk.png","time_sec":0.3}

#$伊塔力克走路:{"frame_count":3,"path":"res://Sprites/NPC_walk/u_italic_walk.png","time_sec":0.3}

#$诗人走路:{"frame_count":3,"path":"res://Sprites/NPC_walk/u_poet_walk.png","time_sec":0.3}

#删字失败:{"frame_count":24,"path":"res://Sprites/backspace_fail/nosword.png","time_sec":1}

##由于该动画由程序随机转向所以实际上是从上往下劈,如果有播放这个动画的需要,建议尝试@[backspace_event]这个魔法
#删字成功:{"frame_count":20,"path":"res://Sprites/backspace_splash/splash.png","time_sec":1}

$摇拽火光:{"frame_count":120,"path":"res://Sprites/candle/candle_burn.png","time_sec":12}

##与摇拽火光搭配使用可以获得不错的效果
#燃起火焰:{"frame_count":15,"path":"res://Sprites/candle/candle_lightup.png","time_sec":1}

#柴塌了:{"frame_count":10,"path":"res://Sprites/ch2_campfire/firewood.png","time_sec":1}

#酒杯晃动:{"frame_count":20,"path":"res://Sprites/ch3_wine/wine.png","time_sec":1}

#喝酒:{"frame_count":20,"path":"res://Sprites/ch3_wine/wine_drink.png","time_sec":1}

#冰融化成水:{"frame_count":30,"path":"res://Sprites/ch5_ice_melt/ch5_ice_melt.png","time_sec":1}

##房"间"和开"间"是同一个动画的正放与倒放,开门和关门也是

#房"间":{"frame_count":30,"path":"res://Sprites/door/room.png","time_sec":1}

#开门:{"frame_count":30,"path":"res://Sprites/door/door_open.png","time_sec":1}

#推字动画:{"frame_count":15,"path":"res://Sprites/glove_push/u_glove_S.png","time_sec":0.5}

#拆"他":{"frame_count":32,"path":"res://Sprites/helmet/helmet_unzip.png","time_sec":1}

#组"他":{"frame_count":42,"path":"res://Sprites/helmet/helmet_zip.png","time_sec":1.5}

$树:{"frame_count":20,"path":"res://Sprites/tree/tree.png","time_sec":2}

##(应该算动画吧,毕竟能加载)
/一个白色的小方块:res://Sprites/unzip/base_white.png

##孩子们,一口气从头看到尾差点给我累死了,中间有些动画甚至还没被整合到文字游戏世界里,不过不用担心,这些动画都是经过测试可用的

##以下动画虽然未经过测试,但是都在游戏文件里了肯定能用

#$人走路:{"frame_count":2,"path":"res://Sprites/ch6_we/we_walk.png","time_sec":0.2}

#$人待机A:{"frame_count":11,"path":"res://Sprites/ch6_we/we_idleA.png","time_sec":1.1}

#$人待机B:{"frame_count":6,"path":"res://Sprites/ch6_we/we_idleB.png","time_sec":0.6}

/一张人的静态图片:res://Sprites/ch6_we/we_default.png

/一张公主的静态图片:res://Sprites/ch7_princess/ch7_princess_ghost.png

/口静态图片:res://Sprites/ch7_tofu/tofu.png

/口静态图片但是没有背景框:res://Sprites/ch7_tofu/tofu_transparent.png

/一张"零一二三四五终"的静态图片:res://Sprites/chapter_title/title_flip_texture.png

/一张"零一二三四五六七八"的静态图片:res://Sprites/chapter_title/title_flip_texture_old.png

##静态噪波图像,不知道有什么用
/静态噪波图像X:res://Sprites/displacement_texture/displacementX.png

/静态噪波图像XY:res://Sprites/displacement_texture/displacementXY.png

/静态噪波图像Y:res://Sprites/displacement_texture/displacementY.png

#$我走路:{"frame_count":2,"path":"res://Sprites/me/me_walk.png","time_sec":0.2}

#$我待机A:{"frame_count":11,"path":"res://Sprites/me/me_idleA.png","time_sec":1.1}

#$我待机B:{"frame_count":6,"path":"res://Sprites/me/me_idleB.png","time_sec":0.6}

/一张我的静态图片:res://Sprites/me/me_default.png

$一堆数字0-9:{"frame_count":10,"path":"res://Sprites/number/number.png","time_sec":1}

/一张下划线的图片:res://Sprites/underline/underline.png

黑魔法提取器

黑魔法提取器

《文字游戏世界》黑魔法提取器

已复制!

黑魔法打字机编辑器

黑魔法打字机编辑器

文字游戏世界场景制作工具

文字游戏世界场景制作工具