xLua中的table映射到C#的Class
-
1.在Lua脚本中声明person的table
person={
name="fex",age="22",12,12,13
}
-
2.在C#中声明对应的类来接收
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using XLua;
public class _004_CsharpCallLua : MonoBehaviour
{
private LuaEnv env;
void Start()
{
env = new LuaEnv();
env.DoString("require 'CSharpCallLua'");
Person p = env.Global.Get<Person>("person");
print(p.name);
print(p.age);
}
private void OnDestroy()
{
env.Dispose();
}
class Person
{
public string name;
public int age;
}
}
输出结果:
注意:
1.在声明C#类来接收table的值时,类名不一定要与table名称一致。
2.但对应的键名要保持一致,否则将不能够对应映射table中的值,这点与json解析数据很类似。
3.table中可以有多余的数据,同样,C#类中也可以有多余的字段名,在映射时,它会对应共有的字段名进行映射,自由度很高。
4.这个过程是值拷贝,如果class比较复杂代价会比较大。而且修改class的字段值不会同步到table,反过来也不会。
这个功能可以通过把类型加到GCOptimize生成降低开销,详细可参见配置介绍文档。