xLua学习总结(三)---C#访问lua中数据

1.将lua中基本数据映射到C#类型

lua中数据

a=1
str="小明" --文件编码改为UTF-8
isRight=true

C# 

int a = env.Global.Get<int>("a");
string str = env.Global.Get<string>("str");
bool isRight = env.Global.Get<bool>("isRight");

2.将lua中的table映射到C#中的List

lua 

tableList={1,2,3,4,5,6}
tableList1={"str1","str2","str3"}

 C#

//注意lua中的数据类型
List<int> intList = env.Global.Get<List<int>>("tableList");

List<string> strList = env.Global.Get<List<string>>("tableList1");

3.将lua中的table映射到C#中的Dictionary 

dic={ key1=1, key2=2 }  --注意此处  key1 不能写成  "key1"
Dictionary<string, int> dic = env.Global.Get<Dictionary<string, int>>("dic");

4.将lua中的table映射到C#中的class或struct

lua

person={
  name="阿菜",
  age=6
}

 c#

class person
{
        public string name;
        public int age;
}
struct personStruct
{
        public string name;
        public int age;
}
person per = env.Global.Get<person>("person");

personStruct per1 = env.Global.Get<personStruct>("person");

5.将lua中的table映射到C#中的Interface

[CSharpCallLua]//此处注意必须打上此标签!!
interface IPerson
{
        string name { get; set; }
        int age { get; set; }
}
IPerson per2 = env.Global.Get<IPerson>("person");

特别注意,映射到接口时,必须在此接口上打上[CSharpCallLua]标签!!!

而且需要生成代码,注册xLua菜单中的GenerateCode  Hotfix Inject in Editor.

如果打上标签后仍会报以下错误

可能是你的unity版本太新了。。。。,同样的在lua方法映射到C#委托的时候也可能会遇到。

6.将lua中的table映射到C#中的LuaTable

LuaTable table = env.Global.Get<LuaTable>("person");
string name = table.Get<string>("name");
int age = table.Get<int>("age");

6.将lua中的全局function映射到C#中的delegate

lua:

function add(num1,num2)
  return num1+num2
end

C#中定义委托

[CSharpCallLua]
delegate int Add(int num1, int num2);
Add add = env.Global.Get<Add>("add");
Debug.Log(add(1, 2));

特别注意,映射到委托时,必须打上[CSharpCallLua]标签!!!

而且需要生成代码,注册xLua菜单中的GenerateCode  Hotfix Inject in Editor.

6.将lua中的全局function映射到C#中的luafunction

LuaFunction luaFunc = env.Global.Get<LuaFunction>("add");
object[] res = luaFunc.Call(1, 2);

建议:table映射为interface,function映射为delegate。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值