找回密码
 立即注册
查看: 278|回复: 0

【Xlua】踩坑笔记梳理

[复制链接]
发表于 2021-8-14 15:09 | 显示全部楼层 |阅读模式
文章目录

    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函数使用了自定义的委托
  1. [CSharpCallLua]publicdelegateintCustomCall2(int a);
复制代码
[CSharpCallLua]这一特性是在Xlua的命名空间中,使用需要在Unity编辑器中需要重新生成Xlua代码。
上述报错的意思是CustomCall2我自定义委托的返回类型有错误,这是由于第一次生成代码时。委托定义返回值为void,在Unity编辑器中需要重新生成代码。
问题的原因在于使用 void CustomCall2 生成过一次代码,注意这里是先用 Void 生成代码,当返回值修改为int再次生成代码的时候,Xlua/Gen目录下的DelegatesGensBridge脚本中报错点源码如下。
  1. if(type ==typeof(CustomCall2)){returnnewCustomCall2(__Gen_Delegate_Imp0);}
复制代码
__Gen_Delegate_Imp0参数的具体内容
  1. publicvoid__Gen_Delegate_Imp0(int p0)
复制代码
此时这里的void需要修改为Int,并在函数__Gen_Delegate_Imp0按照逻辑增加返回值。
解决方法:
1/ 一种是上面描述的修改Gen目录下DelegatesGensBridge脚本中的直接联系的函数方法。
2/ 【个人推荐做法,这样避免修改Gen出现错误】另一种方法比较简单粗暴,在Unity编辑器目录下的Xlua中先运行清空已生成代码,Clear Generated Code然后重新生成代码Generate Code。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-24 12:02 , Processed in 0.087273 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表