无名杀1.10.6版本后,扩展兼容说明
变量需要先用let或var声明,然后才可使用。
报错范例:《千幻聆音》4.15.3:
这里使用了rArrow1变量,但在此作用域内并没有使用var或let对变量进行声明。在无名杀旧版本内核中容忍了此类错误,而新版本中此类错误将直接导致异常抛出。
修改方法:在变量前添加let进行声明。
用eval执行的代码,作用域不可共享到代码外。
报错范例:《特效测试》
这里使用eval将一串字符串转换为代码并执行。Eval执行的代码中声明了变量_0x666并使用。在旧版无名杀中,eval内和外共享作用域,而新版中,eval内执行的代码作用域是独立的。
修改方案(参考):
使用window将变量的作用域提升到全局。之后使用时,用window._0x666引用变量。在外部作用域结束时,清除这个全局变量。
(注:《特效测试》中类似的问题有多出,可注意修改)
对于数组,用includes替换contains
使用原本数组的contains方法不会引起崩溃,但会在后台进行提示。可逐渐将contains方法替换为includes。(注意,classList并不是数组,不要一块替换了)
如果你和我一样懒惰,可以在content内:
扩展的ES Module新形式
参考文献:https://www.jianshu.com/p/463cca670e8c
参考扩展:《千幻聆音》4.16.1.1
使用ESModle形式的扩展,可以:
1、更方便的将扩展代码分割成多个文件。
2、更好的代码提示功能。
3、更便捷引入ESModule标准的JavaScript第三方库。
注:原本的扩展格式仍然沿用,不用修改。新开扩展建议使用ESModule方式创建。
使用game.runAfterExtensionLoaded函数保证代码在某扩展加载后执行
此方法可保证调用到其它扩展中的函数。
使用async简化技能写法
【神愤】原始写法:
Async写法:
告别step后,我们将可以使用更简洁的循环来控制一些重复的流程。比如【神愤】中,需要对每个角色都造成伤害然后令其弃牌。原写法中需要复制数组并重复step,而async/await写法中只需要直观地使用循环语句即可。
领取专属 10元无门槛券
私享最新 技术干货