持续补充,欢迎大佬直接教学
主要参考文档:https://blog.csdn.net/xmx5166/article/details/90712888
C#调用XLua
LuaEnv.DoString("require'LuaScript'");//直接加载Lua脚本,需要放在Resources文件夹下
LuaEnv.DoString("luaCode");//直接敲代码
LuaEnv.DoFile("filePath");//执行filePath下的XLua脚本
LuaEnv.Global.Get<T>("name");//获取类型为T(C#类型),名字为name的Lua变量(所作改变不会映射到Lua)
//若是变量类型是表,则需创建一个含有无参构造函数的类,类这种有和表中元素对应的公有属性,可以多或少
//采用映射到接口的方式要在接口上面打上[CSharpCallLua]标签生成生成代码,所作改变会映射到Lua
//还可映射到Dictionary<,> List<>(有无key),和ref LuaTable
LuaEnv.Tick();//清除Lua未手动释放的LuaBase对象
LuaEnv.Dispose();//注销Lua虚拟机
XLua调用C#
--注释单行
--[[ 注释块]]--
--new出来的C#对象:也会出现在场景中,对象的名称没有给定就会显示默认的new GameObject
obj = CS.UnityEngine.GameObject();
obj = CS.UnityEngine.GameObject('name');
--访问静态属性和方法:使用点号
obj = CS.UnityEngine.GameObject
print('UnityEngine.Time.deltaTime:',CS.UnityEngine.Time.deltaTime) --读静态属性
CS.UnityEngine.Time.timeScale = 0.5 --写静态属性
print('hello world',GameObject.Find('Main Camera')) --静态方法调用
--访问成员属性和方法:成员属性使用点号,成员方法使用冒号
CSClass = CS.CSClass; --在实际项目中,可以先用一个局部变量将C#那边的对象引用一下,今后只需要使用这个变量就好了,避免多次映射访问C#那边的对象增加消耗
cs = CSClass() --创建一个对象时不需要new关键字
cs.proName = 1024 --设置成员属性使用类对象+点号
print(cs.proName) --调用成员属性使用类对象+点号
cs:FunName() --