[LayaAirIDE 2.0]分离模式下使用自定义场景类

操作步骤:1.首先在编辑模式下按F9打开项目设置,在场景设置加入一行“import MyXXX from "../MyXXX";”;
2.然后在编辑设置场景类型后面加入“,MyXXX”;
如下所示(示例类名为LScene);
 
上述两步大部分人应该都知道,但是,这里会出现个问题,就是使用自定义场景类生成的UI类继承的是“Laya.LScene”,而不是直接继承“LScene”,导致编译报错,官方说解决了然而新版本还是有这问题;那么接下来说的就是重点:怎么去解决这编译自动生成的坑;
 
3.解决自定义类的异常;
(1)顺其自然方式:在第1步的时候,再加入一行:“Laya.MyXXX = <any>MyXXX;”,然后为Laya.MyXXX添加一个说明文件,即“.d.ts”文件,其内容跟自定义类保持一致即可实现你该有的功能;操作方式简单,但是无法直接定位到自定义类,当修改了自定义类的类容时需要同步到说明文件,避免报错;
(2)一劳永逸方式:直接修改生成的根源。打开%LayaIDE根目录%\resources\app\out\vs\layaEditor\h5\layabuilder.max.js,搜索“__proto.parseTsImport”,修改该函数体内容:
__proto.parseTsImport=function(str){
var tStr = str.replace("import","");
str = 'from';
str = tStr.indexOf(str) > -1 ? str : '=';
tStr = StringTool$1.trimSide(tStr.split(str)[0]);
this.importDic[tStr] = true;
}
当然也可以把CodeManager.parseTsImport的函数体也改了,虽然说用不到。改完后保存,重启IDE即可实现功能;如果修改之前已经导出过一次,需要清理一下缓存,否则旧的继承类无法受影响,修改方式如下:
打开缓存根目录后将codeCache目录删除即可;该方式处理多个自定义类上比第一种方便,但是对于团队开发时需要同步IDE的修改较为麻烦;
 
附注:其中第3步的第二种方式交由官方来处理为后续版本,那么之后就不会有那么多问题了。
已邀请:

要回复问题请先

商务合作
商务合作