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

Unity和tolua

[复制链接]
发表于 2021-8-11 10:41 | 显示全部楼层 |阅读模式
LuaState是个运行环境,Unity的运行环境是mono,因此我们经常说C#代码跑在mono上,因此lua是跑在luaState上。
lua和Unity是如何交互的呢。我们以lua访问unity的UIPanel类举例,首先lua会生成一个table名字叫UIPanel与C#对应,这个table是在底层C语言上生成的,因为lua的底层是c写的,这个在C语言里生成的table里有很多key,key的名字与UIPnael里的参数与函数名一 一对应,key的值是一个函数,我们都知道使用tolua需要注册变量与函数,因此在tolua中注册了这个UIpanel类的变量名和函数名索引,当lua层想访问C#层的UIPanel类时,Tolua.ToObject(L,1)的意思是从ObjectTranslator.CS(这个C#脚本就是专门用来找索引的)中拿到UIPanel的索引,拿到这个UIPanel的depth参数,LuaDll通过压栈的方式把这条数据传到luaState,如果想要把lua层的UIpanel的depth更改为C#层的depth时,tolua就会找到这个UIPanelTable并找到key为depth,并把这个depth的值修改为C#层的depth值

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-24 04:47 , Processed in 0.068257 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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