[LayaAirIDE3]regClass,ClassUtils问题

最近对一款3.1.4引擎开发的网游进行改造,增加电视导航功能。为此开发了一个小插件,用于选择某个节点下的指定组件,并在适当时机执行组件方法。示例图:

微信图片_20240815140544.png

 
点击"EmitClickEvent"下拉框,可以列出uiBtn节点下所有Laya.Script组件,并且在第二行的下拉框中能列出组件所有公开方法。
 
虽然在组件框显示的是组件类名,但内部保存的是该类通过regClass注册时分配的UUID。
 
在浏览器运行并打开调试器,定位到代码即能看到分配的UUID:

微信图片_20240815141400.png

 
游戏运行在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 ?
难怪运行时找不到组件了。
 
请问大佬们,这个如何解决?
 
 
已邀请:

layabox

赞同来自:

UUID是IDE里编辑和测试运行的时候用的,正式发布后就不再使用,请不要在运行的时候依赖这个ID,请直接说明你的需求即可。

要回复问题请先

商务合作
商务合作