欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

XLua基础

程序员文章站 2023-02-20 15:03:15
一、Lua文件加载 1).Resources加载xluaTest文件 2).通过loader加载 3).自定义Loader(相当于Resources加载和loader加载结合) 先自定义Loader,再加载 二、C#访问Lua 1).获取一个全局基本数据类型 2).访问一个全局的table ①映射到 ......

一、lua文件加载

XLua基础

 

 1).resources加载xluatest文件

XLua基础

2).通过loader加载

XLua基础

 3).自定义loader(相当于resources加载和loader加载结合)

   先自定义loader,再加载

XLua基础

XLua基础

二、c#访问lua

XLua基础

1).获取一个全局基本数据类型

 XLua基础

2).访问一个全局的table 

XLua基础

 ①映射到普通class或struct

XLua基础

 ②映射到一个interface

 先建立一个接口(接口需引用"csharpcalllua")(相当于一个类),再映射

XLua基础

 

XLua基础

 XLua基础

 ③映射到dictionary<>

XLua基础

 ④映射到list<>

XLua基础

 ⑤映射到luatable类

XLua基础

3).访问一个全局的function

①c#访问lua方法  无参

XLua基础

②c#访问lua方法  有参

XLua基础lua中addfunc方法

 

 先定义参数(引用"csharpcalllua")(相当于一个类),再执行方法操作

XLua基础

 XLua基础

 输出结果:(在unity中)

 lua:15;

15;

三、c#调用lua

XLua基础lua中addfunc方法

c#调用lua方法 使用luafunction

XLua基础

输出结果为:(在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)