当前位置: 首页 > news >正文

C#访问lua获取一个table中的函数——映射成interface中的函数

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using XLua;
using System;

namespace Tutorial
{
    public class CSCallLua : MonoBehaviour
    {
        LuaEnv luaenv = null;

        //必须是加标签和public的才能导出
        [CSharpCallLua]
        public interface Person222
        {
            string name
            {
                get;set;
            }
            int age
            {
                get;set;
            }
            int add(int a, int b);
        }

        void Start()
        {
            luaenv = new LuaEnv();
            luaenv = new LuaEnv();
            TextAsset luaScript = Resources.Load<TextAsset>("hello");
            luaenv.DoString(luaScript.text);
            Person222 person = luaenv.Global.Get<Person222>("person");
            int a = person.add(1, 2);
        }


        void OnDestroy()
        {
            luaenv.Dispose();
        }
    }
}

在这里插入图片描述
这里的add = function(self, a, b)必须有一个self作为第一个参数,否则会报错,原理未知。
若是写成:

person=
{
	name ="xiaoming",
	age = 12,
	add = function (a, b) //这里没有self,则会报错
		return a + b
	end
}

在这里插入图片描述

在这里插入图片描述

相关文章:

  • C#访问lua获取全局函数——此函数带多个返回值
  • [置顶] sqlserver2008 新建表之后无法更改表设计的原因
  • lua访问C#中类——访问成员+方法
  • C++中dynamic_cast
  • 数据结构-反转链表
  • lua中rawget和rawset
  • Linux红黑树(二)——访问节点
  • lua中继承
  • SPOJ REPEATS Repeats (后缀数组:子串的最大循环节)题解
  • lua在什么时候设置元表失败呢
  • lua中通过__index继承父类的属性
  • C++中匿名函数的捕获列表和匿名函数的说明
  • lua中通过__index继承父类的方法
  • lua中函数闭包
  • Entity Framework加载相关实体——Lazy Loading
  • Akka系列(七):Actor持久化之Akka persistence
  • Angular4 模板式表单用法以及验证
  • Docker容器管理
  • httpie使用详解
  • Odoo domain写法及运用
  • Rancher-k8s加速安装文档
  • react-native 安卓真机环境搭建
  • 大主子表关联的性能优化方法
  • 蓝海存储开关机注意事项总结
  • 使用Swoole加速Laravel(正式环境中)
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 一起参Ember.js讨论、问答社区。
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • !$boo在php中什么意思,php前戏
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #《AI中文版》V3 第 1 章 概述
  • #Ubuntu(修改root信息)
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • (3)选择元素——(17)练习(Exercises)
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (转)Google的Objective-C编码规范
  • (转)Oracle存储过程编写经验和优化措施
  • (转载)虚函数剖析
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • .md即markdown文件的基本常用编写语法
  • .NET Core引入性能分析引导优化
  • .NET MVC第三章、三种传值方式
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .net 调用php,php 调用.net com组件 --
  • .net 流——流的类型体系简单介绍
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
  • .NET简谈互操作(五:基础知识之Dynamic平台调用)
  • .net经典笔试题
  • .NET中使用Protobuffer 实现序列化和反序列化
  • [2016.7.test1] T2 偷天换日 [codevs 1163 访问艺术馆(类似)]
  • [BeginCTF]真龙之力