super1 发表于 2021-8-14 15:09

【Xlua】踩坑笔记梳理

文章目录

1. void DelegateBridge.__Gen_Delegate_Imp0(int)' has the wrong return type


1. void DelegateBridge.__Gen_Delegate_Imp0(int)’ has the wrong return type

问题描述: 在C#调用lua中的函数方法时出现报错void DelegateBridge.__Gen_Delegate_Imp0(int)’ has the wrong return type
解析: 在C#脚本中,调用lua函数使用了自定义的委托
publicdelegateintCustomCall2(int a);这一特性是在Xlua的命名空间中,使用需要在Unity编辑器中需要重新生成Xlua代码。
上述报错的意思是CustomCall2我自定义委托的返回类型有错误,这是由于第一次生成代码时。委托定义返回值为void,在Unity编辑器中需要重新生成代码。
问题的原因在于使用 void CustomCall2 生成过一次代码,注意这里是先用 Void 生成代码,当返回值修改为int再次生成代码的时候,Xlua/Gen目录下的DelegatesGensBridge脚本中报错点源码如下。
if(type ==typeof(CustomCall2)){returnnewCustomCall2(__Gen_Delegate_Imp0);}__Gen_Delegate_Imp0参数的具体内容
publicvoid__Gen_Delegate_Imp0(int p0)此时这里的void需要修改为Int,并在函数__Gen_Delegate_Imp0按照逻辑增加返回值。
解决方法:
1/ 一种是上面描述的修改Gen目录下DelegatesGensBridge脚本中的直接联系的函数方法。
2/ 【个人推荐做法,这样避免修改Gen出现错误】另一种方法比较简单粗暴,在Unity编辑器目录下的Xlua中先运行清空已生成代码,Clear Generated Code然后重新生成代码Generate Code。
页: [1]
查看完整版本: 【Xlua】踩坑笔记梳理