[LayaAir 2.0]laya2.0 IDE继承自定义类要怎么写?

比如我有这样一个基类
export default class UIBase extends Laya.View{}
然后在编译界面按F9 添加UIbase到 场景类型里面,这样在创建新的场景的时候就会有UIBase可以继承,但生成的LayaMaxUI.ts文件会报错,请问下我还需要做什么操作才能满足我的需求呢? 就是可以每次创建界面的时候继承UIBase类,而不用继承view 或者scene呢
已邀请:

kimiMaro

赞同来自:

如果是为了做UI管理的话 可以用文件模式导出  在UI基类构造函数里调用this.loadScene("xxx.scene")  最后添加到你指定的容器下就会触发onAwake 等函数了。 这个方法不会触发onOpened();但是首次打开会触发onAwake   下次添加到舞台会触发onEnable。 亲测有效、做UI框架管理可以这个方法

石圣

赞同来自:

这个bug到目前为止官方一直没修复,尽管论坛上官方人员回复说已经修复了。
由于今天心情比较好,所以就去研究了一下解决方案,刚好发现了这个小bug所在,哈哈,具体方法如下:

1.找到Laya安装目录下的layabuilder.max.js这个文件。
如果是mac系统,目录可以参考下面,记得将版本号改为自己使用的版本!
/Applications/LayaAirIDE_beta.app/Contents/Resources/app/out/vs/layaEditor/h5/layabuilder.max.js
用windows的同学请自行找目录哈。

2.找到下面代码,具体行号不同版本可能不一样,仅供参考
    24522                         if(this.projectSetting.codeType==1){
    24523                                 classObj["classType"]="Laya." + baseName;
    24524                         }

3.修改为下面样子,其实就是去掉了"Laya."这个前缀
    24522                         if(this.projectSetting.codeType==1){
    24523                                 classObj["classType"]= baseName;
    24524                         }

4.重启LayaIDE,导出就发现666了。大多数同学的问题到这里就解决完毕了。有好奇心的同学可以继续看看下一步~

5.注意这里会将所有的"Laya."前缀都去掉,大家可以根据自己需要做判断。也可以在F9设置里把需要Laya前缀的类加到“Code导入类”里面来解决这个问题。

Victor

赞同来自:

花时间写了篇此功能的实现,结果关键字竟然都搜不到,感兴趣的可以去看下,如果有帮助记得点赞哦
关于自定义场景继承的实现

要回复问题请先

商务合作
商务合作