[LayaAirIDE3]regClass,ClassUtils问题
最近对一款3.1.4引擎开发的网游进行改造,增加电视导航功能。为此开发了一个小插件,用于选择某个节点下的指定组件,并在适当时机执行组件方法。示例图:
点击"EmitClickEvent"下拉框,可以列出uiBtn节点下所有Laya.Script组件,并且在第二行的下拉框中能列出组件所有公开方法。
虽然在组件框显示的是组件类名,但内部保存的是该类通过regClass注册时分配的UUID。
在浏览器运行并打开调试器,定位到代码即能看到分配的UUID:
游戏运行在H5环境下可以正常运行,能通过Laya.ClassUtils.getClass找到对应的类。直到打包为android之后。。。
由于组件UUID在编辑器环境下已经确定,在选择EmitClickEvent组件时,UUID就会序列化保存到场景文件中。谁知打包到android平台运行后找不到类!
后来通过打印日志发现,regClass为每个自定义组件分配的UUID改变了!!
我直接打开assets/cache/stand.alone.version目录查找EmitClickEvent,找到如下代码:
__name(EmitClickEvent, "EmitClickEvent");
EmitClickEvent = __decorateClass([
regClass3("VYato1IqRFy_QklTylPaeg"),
classInfo3({ menu: "TvInputPlugin", caption: "EmitClickEvent" })
], EmitClickEvent);
分配的UUID怎么变成了 VYato1IqRFy_QklTylPaeg ?
难怪运行时找不到组件了。
请问大佬们,这个如何解决?
点击"EmitClickEvent"下拉框,可以列出uiBtn节点下所有Laya.Script组件,并且在第二行的下拉框中能列出组件所有公开方法。
虽然在组件框显示的是组件类名,但内部保存的是该类通过regClass注册时分配的UUID。
在浏览器运行并打开调试器,定位到代码即能看到分配的UUID:
游戏运行在H5环境下可以正常运行,能通过Laya.ClassUtils.getClass找到对应的类。直到打包为android之后。。。
由于组件UUID在编辑器环境下已经确定,在选择EmitClickEvent组件时,UUID就会序列化保存到场景文件中。谁知打包到android平台运行后找不到类!
后来通过打印日志发现,regClass为每个自定义组件分配的UUID改变了!!
我直接打开assets/cache/stand.alone.version目录查找EmitClickEvent,找到如下代码:
__name(EmitClickEvent, "EmitClickEvent");
EmitClickEvent = __decorateClass([
regClass3("VYato1IqRFy_QklTylPaeg"),
classInfo3({ menu: "TvInputPlugin", caption: "EmitClickEvent" })
], EmitClickEvent);
分配的UUID怎么变成了 VYato1IqRFy_QklTylPaeg ?
难怪运行时找不到组件了。
请问大佬们,这个如何解决?
没有找到相关结果
已邀请:
要回复问题请先登录
1 个回复
layabox
赞同来自: