首页 > Python基础教程 >
-
C#教程之XLua基础
一、Lua文件加载
1).Resources加载xluaTest文件
2).通过loader加载
3).自定义Loader(相当于Resources加载和loader加载结合)
先自定义Loader,再加载
二、C#访问Lua
1).获取一个全局基本数据类型
2).访问一个全局的table
①映射到普通class或struct
②映射到一个interface
先建立一个接口(接口需引用"CSharpCallLua")(相当于一个类),再映射
③映射到Dictionary<>
④映射到List<>
⑤映射到LuaTable类
3).访问一个全局的function
①C#访问lua方法 无参
②C#访问lua方法 有参
Lua中AddFunc方法
先定义参数(引用"CSharpCallLua")(相当于一个类),再执行方法操作
输出结果:(在unity中)
Lua:15;
15;
三、C#调用Lua
Lua中AddFunc方法
C#调用lua方法 使用LuaFunction
输出结果为:(在unity中)
24;
-22
四、Lua调用C#
1).new C#对象
① 普通
C#: var newGameObj = new UnityEngine.GameObject();
Lua: local newGameObj = CS.UnityEngine.GameObject()
② 含参构造
Lua: local newGameObj2 = CS.UnityEngine.GameObject('helloworld')
2).访问C#中静态的属性 (调用用".")
Lua: print(CS.UnityEngine.Time.deltaTime)
3).访问C#中静态的方法 (调用用".")
Lua: local cameraGo = CS.UnityEngine.GameObject.Find('Main Camera')
4).访问C#中的成员方法 (调用用":")
Lua: local cameraGo = CS.UnityEngine.GameObject.Find('Main Camera')
cameraGo:SetActive(false)
5).访问C#中的成员属性 (调用用".")
Lua: local cameraCom = cameraGo:GetComponent("BoxCollider")
CS.UnityEngine.GameObject.Destroy(cameraCom)