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

XLua学习笔记 { }

[复制链接]
发表于 2023-4-9 09:31 | 显示全部楼层 |阅读模式
Lua调用C#

通过生成的适配代码进行调用

把在白名单上和打上[LuaCallCSharp]标签的C#类转换成Lua的table,然后注册C#类的方法和属性到table中。性能好,但占用安装包的内存大
通过反射机制进行调用

性能差,在运行的时候才去查找C#的方法,但占用安装包的内存小
C#调用Lua

使用XLua中的LuaEnv这个类的方法

1. DoString

字符串:DoString("print('a')")
模块:DoString("require 'Module.lua'")
2. 值类型的反射

luaenv.Get<int>("a")
3. 引用类型的反射

C#的类和接口需添加[CSharpCallLua]标签
Global.GetInPath<委托>("math.max")
Global.GetInPath<IPerson>("Person")
生成适配代码

Generator.cs

GenAll()

可在Unity编辑器扩展:生成→C#代码→XLua导出
模板

路径:XLua\Src\Editor\Template,可以在里面增加执行语句,Warp文件,Lua调用C#
例如在LuaClassWarp.tpl.txt里的static int m<%=method.Name%>(RealStatePtr L)增加print(“<%=method.Name%>”),就能实现在调用某个方法的时候打印这个方法的名字了
生成拓展适配代码

XLuaExtensionGenerator.cs
LuaFunction,C#调用Lua
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-23 12:39 , Processed in 0.088095 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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