

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;
}
}
輸出結果:

img.jpg
注意:
1.在聲明C#類來接收table的值時,類名不一定要與table名稱一致。
2.但對應的鍵名要保持一致,否則將不能夠對應映射table中的值,這點與json解析數(shù)據(jù)很類似。
3.table中可以有多余的數(shù)據(jù),同樣,C#類中也可以有多余的字段名,在映射時,它會對應共有的字段名進行映射,自由度很高。
4.這個過程是值拷貝,如果class比較復雜代價會比較大。而且修改class的字段值不會同步到table,反過來也不會。
這個功能可以通過把類型加到GCOptimize生成降低開銷,詳細可參見配置介紹文檔。