实战用法
remove_from_temp_array 常用于需要动态维护候选列表的 mod 场景,例如在随机事件循环中逐步剔除已处理的元素,或在遍历数组时按条件移除不满足要求的项目。以下示例演示在事件中从候选国家数组里移除一个指定值:
# 先向临时数组中添加候选元素,再移除不需要的
add_to_temp_array = { array = candidate_countries value = 42 }
add_to_temp_array = { array = candidate_countries value = 17 }
# 按值移除特定元素
remove_from_temp_array = {
array = candidate_countries
value = 42
}
# 或使用短格式直接移除
remove_from_temp_array = { candidate_countries = 17 }
配合关系
[add_to_temp_array](/wiki/effect/add_to_temp_array):通常先用它向数组填充元素,再用 remove_from_temp_array 按条件剔除,两者构成临时数组的"增删"闭环。
[for_each_scope_loop](/wiki/effect/for_each_scope_loop):在遍历数组的循环体内,对满足条件的元素调用移除操作,实现过滤式迭代。
[is_in_array](/wiki/trigger/is_in_array):在移除前先检测目标值是否存在于数组,避免对不存在的元素做无效操作。
[clear_temp_array](/wiki/effect/clear_temp_array):当需要彻底重置数组时与之配合使用;相比逐条删除,clear_temp_array 更高效,两者在不同粒度的清理需求下互补。
常见坑
- 混淆
value 与 index 的语义:value 是按元素的实际值匹配删除,index 是按位置(从 0 开始)删除,若两者同时写入同一块,游戏只会使用其中一个,导致删除了预期之外的元素;需明确场景后只选其一。
- 对普通(非临时)数组误用此命令:
remove_from_temp_array 只作用于 temp_array,若目标是通过 add_to_array 创建的持久数组,应改用 [remove_from_array](/wiki/effect/remove_from_array),否则命令静默失效,数组内容不会发生任何变化。