XLua官方API 01 C# API

目录

LuaEnv类

LuaTable类

LuaFunction类


XLua官方教程目录 总结篇

LuaEnv类

object[] DoString(string chunk, string chunkName = "chuck", LuaTable env = null)

描述:

执行一个代码块。

参数:

chunk: Lua代码文字串;

chunkName: 发生error时的debug显示信息中使用,指明某某代码块的某行错误;

env :这个代码块的环境变量;

返回值:

代码块里return语句的返回值;

比如:return 1, “hello”,DoString返回将包含两个object的数组, 一个是double类型的1, 一个是string类型的“hello”

例子:

    LuaEnv luaenv = new LuaEnv();

    object[] ret = luaenv.DoString("print(‘hello’)\r\nreturn 1")

UnityEngine.Debug.Log("ret="+ret[0]);

luaenv.Dispose()

 

T LoadString<T>(string chunk, string chunkName = "chunk", LuaTable env = null)

描述:

加载一个代码块,但不执行,只返回类型可以指定为一个delegate或者一个LuaFunction

参数:

chunk: Lua代码的字符串;

chunkName: 发生error时的debug显示信息中使用,指明某某代码块的某行错误;

env :这个代码块的环境变量;

返回值:

代表该代码块的delegate或者LuaFunction类;

 

LuaTable Global;

描述:

代表lua全局环境的LuaTable

 

void Tick()

描述:

清除Lua的未手动释放的LuaBase对象(比如:LuaTable, LuaFunction),以及其它一些事情。

需要定期调用,比如在MonoBehaviour的Update中调用。

 

void AddLoader(CustomLoader loader)

描述:

增加一个自定义loader

参数:

loader:一个包含了加载函数的委托,其类型为delegate byte[] CustomLoader(ref string filepath)当一个文件被require时,这个loader会被回调,其参数是调用require所使用的参数,如果该loader找到文件,可以将其读进内存,返回一个byte数组。如果需要支持调试的话,而filepath要设置成IDE能找到的路径(相对或者绝对都可以)

 

void Dispose()

描述:

Dispose该LuaEnv。

 

LuaEnv的使用建议:全局就一个实例,并在Update中调用GC方法,完全不需要时调用Dispose

 

LuaTable类

T Get<T>(string key)

描述:

获取在key下,类型为T的value,如果不存在或者类型不匹配,返回null;

 

T GetInPath<T>(string path)

描述:

和Get的区别是,这个函数会识别path里头的“.”,比如var i = tbl.GetInPath<int>(“a.b.c”)相当于在lua里头执行i = tbl.a.b.c,避免仅为了获取中间变量而多次调用Get,执行效率更高。

 

void SetInPath<T>(string path, T val)

描述:

和GetInPaht<T>对应的setter;

 

void Get<TKey, TValue>(TKey key, out TValue value)

描述:

     上面的APIKey都只能是string,而这个API无此限制;

 

void Set<TKey, TValue>(TKey key, TValue value)

描述:

     对应Get<TKey, TValue>setter

 

T Cast<T>()

描述:

    把该table转成一个T指明的类型,可以是一个加了CSharpCallLua声明的interface,一个有默认构造函数的class或者struct,一个DictionaryList等等。

 

void SetMetaTable(LuaTable metaTable)

描述:

设置metaTable为table的metatable

 

LuaFunction类

注意:用该类访问Lua函数会有boxing,unboxing的开销,为了性能考虑,需要频繁调用的地方不要用该类。建议通过table.Get<ABCDelegate>获取一个delegate再调用(假设ABCDelegate是C#的一个delegate)。在使用使用table.Get<ABCDelegate>之前,请先把ABCDelegate加到代码生成列表。

object[] Call(params object[] args)

描述:

以可变参数调用Lua函数,并返回该调用的返回值。

 

object[] Call(object[] args, Type[] returnTypes)

描述:

调用Lua函数,并指明返回参数的类型,系统会自动按指定类型进行转换。

 

void SetEnv(LuaTable env)

描述:

相当于lua的setfenv函数。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jack Yan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值