【XLua】008-C#訪問Lua中的table:映射到Class


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生成降低開銷,詳細可參見配置介紹文檔。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,680評論 19 139
  • 下載Redis 在Redis的官網(wǎng)下載頁上有各種各樣的版本,我這次是在windows上部署的,要去GitHub上下...
    p了個f閱讀 1,263評論 0 1
  • 有半個月亮就好 如半張餅子 剛好填飽肚子 再扯下半片云 蓋住肚皮 星星一個不要 不要這些易碎的燈籠 破壞了風織的手...
    明子的世界閱讀 427評論 2 8
  • 到現(xiàn)在為止,吃了兩顆芝麻丸,一杯紅糖姜茶,一杯枸杞紅棗桂圓茶,正在考慮要不要吃第三顆芝麻丸,花生米不打算吃了。 對...
    455be9e96fab閱讀 465評論 0 1

友情鏈接更多精彩內容