找回密码
 立即注册
楼主: pc8888888

Unity3D热更新LuaFramework入门实战(4)——Lua组件

[复制链接]
发表于 2021-12-15 10:04 | 显示全部楼层
《Unity3D网络游戏实战》终于出版了,感谢关注^_^,拖了好久
发表于 2021-12-15 10:12 | 显示全部楼层
Add会调用awake方法,如果没有调用awake,而只调用了new,那就说明在    if (rets.Length != 1)return null;这里返回了,也就是看一看new返回的值个数不是1。那么可能检查一下这一块相关的内容就能解决
发表于 2021-12-15 10:16 | 显示全部楼层
说明没有找到lua脚本里面的Awake方法,有两个地方可能会导致这个问题,可以检查看看cmp.table = (LuaTable)rets[0];这里的table是不是符合预期的(即new出来的返回值),而且这个返回值是继承自TankCmp,且确保表TankCmp 有Awake方法
发表于 2021-12-15 10:16 | 显示全部楼层
参考作者自定义Api的那篇文章,很可能是你没在CustomSettings.cs上添加注册到lua的类型列表,下面这句                _GT(typeof(LuaComponent)),
发表于 2021-12-15 10:17 | 显示全部楼层
谢谢解答,大神你的新书真是不错,收货颇丰
发表于 2021-12-15 10:20 | 显示全部楼层
您好,我确定了new返回的个数是1,但是我发现,我new出来的table中不包含Awake等方法,貌似并没有在元表中查找Awake就返回了空。请问这个应该怎么解决呢
发表于 2021-12-15 10:25 | 显示全部楼层
object[] rets = fun.Call (tableClass);
您写的这句话有问题,LuaFunction中的Call函数是没有返回值的
发表于 2021-12-15 10:31 | 显示全部楼层
我也遇到了这个问题,我的解决方法是不要rets[],直接让cmp.table =tableClass;
使用没有问题,但是不知道这样改有没有什么隐患。
发表于 2021-12-15 10:36 | 显示全部楼层
我也遇到这个问题
发表于 2021-12-15 10:45 | 显示全部楼层
我也遇到了,不知道作者是怎么搞出来的。你是怎么解决的呢?
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-5-15 02:10 , Processed in 0.135078 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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