【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解析数据很类似。

3.table中可以有多余的数据,同样,C#类中也可以有多余的字段名,在映射时,它会对应共有的字段名进行映射,自由度很高。

4.这个过程是值拷贝,如果class比较复杂代价会比较大。而且修改class的字段值不会同步到table,反过来也不会。
这个功能可以通过把类型加到GCOptimize生成降低开销,详细可参见配置介绍文档。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,131评论 19 139
  • 下载Redis 在Redis的官网下载页上有各种各样的版本,我这次是在windows上部署的,要去GitHub上下...
    p了个f阅读 1,228评论 0 1
  • 有半个月亮就好 如半张饼子 刚好填饱肚子 再扯下半片云 盖住肚皮 星星一个不要 不要这些易碎的灯笼 破坏了风织的手...
    明子的世界阅读 418评论 2 8
  • 到现在为止,吃了两颗芝麻丸,一杯红糖姜茶,一杯枸杞红枣桂圆茶,正在考虑要不要吃第三颗芝麻丸,花生米不打算吃了。 对...
    455be9e96fab阅读 411评论 0 1