# Worker系统API文档
# 引擎环境
# ▎engine.Game
游戏类,包含着worker系统。
通过engine.game
来获取当前游戏实例。
(仅介绍worker相关成员)
成员 | 类型 | 注释 |
---|---|---|
createWorkerJob | (jobPath: string, data: object) => WorkerJob | 创建任务 jobPath对应任务文件的路径。路径规则请看下方详解。 data是交互数据块,用wx.createSharedArrayBuffer()创建的共享内存来进行交互; |
<!-- | initWorkerSystem | ( ) => void |
任务文件路径:
使用不加文件后缀名的相对路径即可。
比如说:
worker文件夹路径是assets/worker
任务文件路径是assets/worker/jobs/myJob.ts
这时应game.createWorkerJob("jobs/myJob")
# ▎engine.WorkerJob
通过game.createWorkerJob()
获取到的任务实例。
成员 | 类型 | 注释 |
---|---|---|
data | obejct | (只读)创建任务时创建的交互数据块 |
jobPath | string | (只读)任务文件路径 |
status | "init"|"starting"|"running"|"suspended" |"destroying"|"destroyed"|"invalid" | 任务状态,请看表格下方详解 |
start | (workCallback?: (WorkerJob => void)) => void | 启动任务,只能启动状态为init的任务; 参数是该任务的回调。回调的参数是该Job,this也是该Job; 如果不提供回调,则会跳过引擎内的任务回调阶段,worker内仍是一帧跑一次。 |
suspend | ( ) => void | 暂停任务,只能暂停状态为starting或者running的任务; 任务暂停之后,引擎内的任务回调也会跳过。 |
resume | ( ) => void | 重启任务,只能重启状态为suspended的任务; 重启之后,状态重新变为starting。 |
setWorkCallback | (workCallback?: (WorkerJob => void)) => void | 设置任务回调,可在任何时候设置,当帧末的回调就会改变。 |
dispose | ( ) => void | 终止任务,该操作不可逆; 终止之后,当帧末的回调就会停止执行; 下一帧开始worker内也不会继续跑该任务。 |
任务状态status:
- 新建任务后,任务不会立刻启动,状态为init;
start()
了之后任务启动,状态变为starting;- worker环境内执行了一次任务之后,状态变为running(所以可以通过状态来判断worker有没有开始执行);
suspend()
了之后,状态变为suspended;resume()
了之后,状态变为starting;worker再执行一次之后变为running;dispose()
了之后,状态变为destroying;帧末进行真实销毁,状态变为destroyed。
任务回调Tips:
可以通过this.data来访问数据,也可通过job.data来访问数据。
const job = game.createJob(...);
job.start(function (job) {
// 两者都可以
this.data.num.buffer...
job.data.num.buffer...
});
# Worker环境
# ▎Job
代表一类任务的抽象类,用户以实现该类的方法来创建worker任务。
成员 | 类型 | 注释 |
---|---|---|
data | object | 引擎内创建的交互数据块 |
init | abstract ( ) => void | 初始化,worker内创建任务时调用 |
update | abstract ( ) => void | 在update里实现每帧的真实工作; 可通过访问this.data来获取交互数据块 |