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

设置事件参数

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

用于直接修改指定物件或玩家当前持有的事件参数。根据最新研究,@[set_event_params] 不仅能改常见显示参数,还能改不少底层移动、渲染、音效与运行状态字段。

target 取值

  • "self":当前执行该指令的物件自身。
  • "player":玩家。
  • "具体物件名":场景中的目标物件。

常用可修改参数

下表优先列出实用性较高、风险较低的字段。示例中的值仅作演示,实际效果请结合关卡逻辑测试。

属性名中文说明类型 / 可选值示例值
text普通物件显示的字面字符串"门"
big_text大物件专属字面字符串"终点"
text_color文字颜色颜色字符串"#FFFFFF"
opacity不透明度整数255
visible是否渲染布尔值false
layer所在层级BACK / MID / FRONT"FRONT"
z_index图层高度整数10
z_as_relative图层是否基于父节点布尔值false
center_rotation以中心点旋转的角度0 ~ 359180
move_speed物件速度整数或 Slow / Normal / Fast / Very Fast"Fast"
direction面向方向2 / 4 / 6 / 86
now_pos当前网格坐标二维数组[3,5]
through是否穿透布尔值true
can_push是否可推布尔值true
can_delete是否可删布尔值true
can_split是否可拆布尔值true
can_move当前是否允许移动布尔值false
locked是否锁定循环移动布尔值true
event_trigger_action触发方式AUTO / PRESS / TOUCH"PRESS"
exist_condition存在条件字符串"s:开关A==true"
exist_fade_in出现时是否淡入布尔值true
is_high_priority是否优先出现布尔值true
need_be_saved是否参与存档布尔值false
bgs绑定的环境音路径字符串"res://Sounds/se/wind.wav"
bgs_loop环境音是否循环布尔值true
bgs_max_dist声音传播距离0 ~ 2000600
commands物件自身携带的命令文本字符串"@[play_se] \"res://...\""
loop_move_route循环移动指令字符串"@[move_up]"
copy_from_event创建时复制命令来源字符串"模板物件"
user_data用户自定义数据字典{}

可用于补间的参数

研究表明,以下字段更适合通过 @[tween_parameter] 平滑修改,而不是直接硬切:

参数路径说明
position:x像素坐标 X
position:y像素坐标 Y
opacity不透明度
scale:x横向缩放
scale:y纵向缩放

如果只是想做动画,请优先使用补间;如果是想永久改物件状态,则优先使用 @[set_event_params]

新发现的渲染参数

这些字段适合做显示控制、颜色变化、局部透明等效果:

属性名中文说明类型 / 范围示例值
modulate:r整体红色通道0 ~ 255255
modulate:g整体绿色通道0 ~ 255128
modulate:b整体蓝色通道0 ~ 25564
modulate:a整体透明通道0 ~ 255200
self_modulate:r仅自身红色通道,不影响子节点0 ~ 255255
self_modulate:g仅自身绿色通道,不影响子节点0 ~ 255255
self_modulate:b仅自身蓝色通道,不影响子节点0 ~ 255255
self_modulate:a仅自身透明通道,不影响子节点0 ~ 255180

理论上可改,但要谨慎的运行时参数

@[set_event_params] 的实现方式决定了:只要该物件能通过 get() 访问到对应字段,而且字段不是 null,理论上就有机会被修改。因此除导出变量外,还有一批运行时字段也可能生效。

物件 / 玩家共用父类中的常见字段

属性名中文说明类型 / 说明
moving_pos插值中的移动位置二维数组
has_move_cooldown是否有移动冷却布尔值
cooldown_count当前移动冷却时间整数
max_cooldown_count最大移动冷却时间整数
move_route当前移动路径数组
move_route_index当前移动路径索引整数
wait_count等待计数整数
is_move_route_forcing是否处于强制移动布尔值
is_movement_pause是否暂停移动布尔值
move_zone可移动区域数组
move_dead_zone不可移动区域数组
can_pass_group可通过的组字符串
original_move_route原始移动路径数组
original_move_route_index原始移动路径索引数组
tileMap地图引用路径或对象引用
jump_peak跳跃高度整数
jump_count跳跃计数整数
is_shaking是否震动中布尔值
now_shake_frame当前震动帧浮点数
total_shake_frame总震动帧浮点数
shake_distance震动距离浮点数
is_stucking是否卡住布尔值
is_pushing_around是否正在推动其他物件布尔值

风险更高的字段

下列字段虽然理论可改,但容易影响解释器状态、存在判定或子事件结构,不建议在正式关卡中随意操作:

属性名风险说明
org_pos物件初始位置,通常只在游戏开始时赋值一次
existing物件当前是否存在,强改可能与存在条件冲突
list已解析的命令列表,改坏后可能导致解释器异常
was_exist_condition_valid上次存在条件检查结果,可能影响刷新逻辑
sub_events子事件命令字典,结构错误容易直接损坏子事件执行

其中 sub_events 需要保持如下字典结构:

{
  "子事件字符1": [命令列表],
  "子事件字符2": [命令列表]
}

注意事项

  • 普通物件与玩家使用同一个父类,所以某些移动相关字段对玩家也可能生效。这也是“等待期间玩家无法行动”这一现象的重要解释之一。
  • type 虽然可改为 EventPlayer 标记,但研究指出它更像引擎内部标记,改完不会真的把物件变成玩家
  • 若要修改位置,优先考虑 @[transport_event];强行改部分底层位置参数可能造成显示与碰撞不同步。
  • 若要做平滑过渡,请优先改用 @[tween_parameter],避免直接设置导致跳变。
  • 研究笔记指出:用补间直接改“事件参数”类字段可能出现异常,因此改物件属性优先使用 @[set_event_params],做动画优先使用补间可安全支持的字段
  • commandsmove_routesub_events 这类结构化字段不建议手写热修改,除非已经确认格式完全正确。