程序控制

调用场景 auto_sync

在当前任务中,将场景加载为函数并调用。

通过传入场景 ID,调用场景。场景可以是时间轴场景,也可以是 Lua 场景。

  • 函数名:lua模块的函数scene
  • 参数:
    1. scene_id: [str] 场景 ID
    2. params: [list[any]] 入参。可选,默认空
    3. dir: [str] 工作空间名称。可选,默认根目录
  • 返回:[any] 场景的返回值

示例程序

场景 10001:

local params = ...
print("params: ", params)

-- 设置全局变量
var_test = {
    name = "小吴",
    age = 16
}
return 4, 5, 6

场景 10002:

print(scene(10001, {1, 2, 3})) -- 打印场景返回值
print(var_test) -- 打印全局变量

启动任务

启动新任务,等待新任务开始运行后返回新任务的 task_id

串行任务会排队执行,同一时间最多只能运行一个串行任务,需等待前面的任务完成、失败或终止后,才会运行后续任务;

并行任务会立即执行,可以同时运行多个并行任务,环境变量相互独立;

scene 不同的是,start_task 会创建一个新线程执行任务。

注意

  • 当被启动的场景里包含运动相关接口时,务必以串行任务启动(is_parallelfalse
  • 在串行任务中,务必以并行任务启动(is_paralleltrue),否则将阻塞住
  • 函数名:lua模块的函数start_task
  • 参数:
    1. scene_id: [str] 场景 ID
    2. params: [list[str]] 传递参数,字符串数组。可选,默认空
    3. dir: [str] 工作空间名称。可选,默认根目录
    4. is_parallel: [bool] 是否并行执行。可选,默认 false(串行)
    5. loop_to: [int] 重复执行次数。可选,默认 1 次,0 代表无限次
  • 返回:[int] 任务 ID(task_id)

示例程序

task_id = start_task("10024", nil, nil, false, 1) -- 串行执行的任务

获取全部任务 ID

  • 函数名:lua模块的函数get_task_list
  • 参数:无
  • 返回:[list[int]] 全部未完成的任务 ID

示例程序

print(get_task_list())

获取串行任务 ID 3.1.18

  • 函数名:lua模块的函数get_main_task_id
  • 参数:无
  • 返回:[int] 串行任务的 ID。无串行任务时返回 nil

示例程序

task_id = get_main_task_id()

获取当前任务 ID

  • 函数名:lua模块的函数get_task_id
  • 参数:无
  • 返回:[int] 当前任务 ID

示例程序

print(get_task_id())

等待任务完成

注意:不要等待自己,等待自己将永远不会完成。

  • 函数名:lua模块的函数wait_task
  • 参数:
    1. task_id: [int] start_task 返回的任务 ID。可选,默认为串行任务
  • 返回:[str] 任务的所有 print 输出

示例程序

stdout = wait_task(task_id)
print(stdout)

获取任务状态

  • 函数名:lua模块的函数get_task_state
  • 参数:
    1. task_id: [int] 任务 ID。可选,默认为串行任务
  • 返回:[str] 任务状态:"NONE"无任务;"WAIT"排队中;"RUNNING"运行中;"PAUSE"暂停中;"SUCCESS"运行成功;"INTERRUPTING"停止中;"INTERRUPT"已停止;"FAIL"运行失败

示例程序

state = get_task_state(task_id)
print(state)

停止任务

停止指定任务。当停止串行任务时,会自动调用 stop_move 停止运动。

  • 函数名:lua模块的函数cancel_task
  • 参数:
    1. task_id: [int] 任务 ID。可选,默认为串行任务
  • 返回:[bool] 是否执行成功

示例程序

cancel_task(get_task_id())

暂停任务

暂停指定任务。当暂停串行任务时,会自动调用 pause_move 暂停运动。

  • 函数名:lua模块的函数pause_task
  • 参数:
    1. task_id: [int] 任务 ID。可选,默认为串行任务
  • 返回:[bool] 是否执行成功

示例程序

pause_task(get_task_id())

兼容说明

pause 为该函数的别名。

恢复任务

恢复指定任务。当恢复串行任务时,会自动调用 resume_move 恢复运动。

  • 函数名:lua模块的函数resume_task
  • 参数:
    1. task_id: [int] 任务 ID。可选,默认为串行任务
  • 返回:[bool] 是否执行成功

示例程序

resume_task(get_task_id())

兼容说明

resume 为该函数的别名。