新手引导‐重复代码?状态还原?通通解决 - 1226085293/MKFramework GitHub Wiki

如果我们需要跳转任一步骤,而不是按照顺序执行,怎么做才能保证正常展示? 以及在多个引导步骤内存在重复代码,怎么避免?

很简单,使用操作单元

操作单元

将不同的操作划分为操作单元,例如清空桌面,展示对话框。

操作单元集合示例

import * as cc from "cc";

const tab = {
    清理桌面: {
        load() {},
        reset() {},
        unload() {}
    },
    对话框: {
        load() { ... },
    },
};

const key: { [k in keyof typeof tab]: k;} = new Proxy(Object.create(null), {
	get: (target, key) => key,
});

export default { tab, key };

回调函数

操作单元的回调只会在切换引导步骤时调用

  • load:上个引导步骤不存在当前操作单元时调用

  • unload:下个引导步骤不存在当前操作单元时调用

  • reset:上下引导步骤都存在当前操作单元时调用

注册

const guide_manage = new mk.guide_manage({
    operate_tab: operate.tab,
});

使用

class guide_step_1 extends mk.guide_step_base {
    operate_ss = [operate.key.清理桌面, operate.key.对话框];

    load() {
        const window = await this.operate_tab[operate.key.对话框];

        window.xxx = "你好";
    }
}
  • 在引导步骤内的 operate_ss 填写 operate.key.xxx 的单元 key 数组即可,按照顺序加载引导单元

  • 可以在引导步骤内通过 this.operate_tab[operate.key.xxx] 获取引导单元的 load 函数返回值