命令百科

trigger · clear_temp_array

Definition

  • Supported scope:any
  • Supported target:none

Description

Clears the contents of a temporary array
Example: clear_temp_array = array_name

实战 · 配合 · 坑

实战内容由 AI 生成,并已对照 vanilla 命令词表校验 —— 请当作起点而非权威依据。上方的定义节才是游戏自带文档原文。

实战用法

clear_temp_array 常见于需要在循环或多阶段计算中复用同一个临时数组名的场景,例如先收集满足条件的国家列表、处理完毕后清空,再进行下一轮收集。典型应用包括动态事件选项生成、按条件筛选州省列表等复杂数组运算流程中的"重置"步骤。

# 在 effect 块中先用完数组,再清空以供后续逻辑复用
effect = {
    # ... 对 target_countries 数组的处理逻辑 ...
    clear_temp_array = target_countries   # 清空,避免上轮数据污染下轮结果
    # 重新向 target_countries 填入新数据
    for_each_scope_loop = {
        array = faction_members
        add_to_temp_array = { array = target_countries val = THIS }
    }
}

配合关系

  • [add_to_temp_array](/wiki/effect/add_to_temp_array):最直接的搭档——先用 add_to_temp_array 向数组写入元素,处理完毕后用 clear_temp_array 清除,为下一轮写入提供干净的起点。
  • [for_each_scope_loop](/wiki/effect/for_each_scope_loop):循环体执行前若需要重新构造数组,常在循环外先调用 clear_temp_array 保证数组为空,避免重复累积。
  • [remove_from_temp_array](/wiki/effect/remove_from_temp_array):当只需要移除部分元素时用 remove_from_temp_array,而需要彻底重置时则换用 clear_temp_array,两者形成"局部清理 vs 全量清理"的互补关系。
  • [is_in_array](/wiki/trigger/is_in_array):在清空数组前往往会用 is_in_array 做最后一次查询判断,两者构成"用完即清"的标准模式。

常见坑

  1. 误用于永久数组clear_temp_array 只能清空以 temp_ 开头(或在同一 effect 块内声明的临时)数组;若想清空通过 set_variable 等持久化的普通数组,应使用 [clear_array](/wiki/effect/clear_array),混用会导致脚本报错或逻辑静默失效。
  2. 清空时机过早:在 for_each_scope_loopwhile_loop_effect 内部调用 clear_temp_array 会在每次迭代都把数组清空,通常应将清空操作放在循环之外(循环开始前或结束后),否则循环内积累的数据会被反复抹除,造成难以追踪的逻辑错误。