知识点:

LuaInterface作用是用来完成Lua与C#的相互调用.

LuaInterface核心库:1.luainterface.dll 用于C#读取lua(放在bin目录同级)

2.luanet.dll          用于lua读取C#(放在bin/debug目录下)

写C#脚本时如用到lua,则将luainterface.dll luanet.dll 导入工程,同时引用 using luainterface.dll; 

这样就直接可以引用

Lua   xt =new Lua();

赋值: xt["num"]=2;

xt["str"]="a string";

xt.newtable("mytable");创建新表格

在C#总执行lua文件

1). xt.DoString("num"=2);

xt.DoString("str =' a string ' ");

object [] obj =xt.DoString("return str ,num");

foreach (object  j in obj)

{Console.WriteLine(j);  }

2). xt.DoFile("mylua.xt");---------C#编码

--------------以下是lua编码------------------

(注意编码格式为ANSI)

str ="a string"

num=2

print(str,num)

3). C#语言与lua语言对应关系

Lua                                  C#

nil                                  null

string                            system.string

number                        system.double

boolean                        system.Boolean

table                            luainterface.Luatable

function                       luainterface.function

把C#方法注册到Lua的一个全局方法

一.类中普通方法注册到lua中

1). public void NomalMethod()//普通方法

{

cw....

}

2). Program tempProgram =new Program ();

3).xt.RegisterFunction("NewMethod",tempProgram ,tempProgram.GetType().GetMethod("NomalMethod") );

4).xt.DoString("NewMethod()");            //执行

二.类中静态方法注册到lua中(只是将第三步的第二个参数换为null)

1). public static void MyStaticMethod()//普通方法

{

cw....

}

2). Program TempProgram =new Program ();

3).xt.RegisterFunction("NewStaticMethod", null,TempProgram.GetType().GetMethod("MyStaticMethod") );

4).xt.DoString("NewStaticMethod()");            //执行

在lua中使用C#的类

1). require "luanet"-----------------luanet是库,需要放对位置

2). luanet.load_assembly("System") --加载C#系统

3).int32=luanet. import_type("System.Int32") --定义int32

4). num=int32.Parse("3456")-----.Parse为C#中静态方法此时已被调用

print(int32)

print(num)

lua中访问C#的属性和方法

属性:obj.name

函数:obj:method()

 -------------------C#脚本----------------------------------

namespace  Test

{

class testProgram()

{

public string name ="myname";

public void testMethod()

{

cw....

}

}

}

 -------------------lua脚本----------------------------------

1). require "luanet"-----------------luanet是库,需要放对位置

2). luanet.load_assembly("Test") --加载C#系统

3).Myprogram=luanet. import_type("Test.tastProgram") --定义int32

4).Myprogram001=Myprogram()-----new一下

5).print(Myprogram001.name)

print(Myprogram001:testMethod)

-------------------------------------------------------------------------

lua语言自学知识点----Lua与.Net相互调用的更多相关文章

  1. lua语言自学知识点----简单了解

    零碎知识点: lua:用lua写UI,更新UI,因为lua可直接跨平台解析,不需要编译,方便更新------>热更新. c#反射也可以达到更新,但非常麻烦,切不支持iOS. 在lua中一个人汉字 ...

  2. lua脚本之lua语言简介以及lua的安装

    本博主不擅于进行文字创作,所以,相当一部分文字皆复制于其他博文.还希望能够得到谅解.  一.Lua语言简介 Lua是一个免费的开源软件,可以免费用于科研及商业.Lua具有一个专家团队在维护和升级,其设 ...

  3. Lua语言自学之01.基础概念的理解

    编程不只是这么简单,它的思维是理性的编程思维,操纵机器干事本来就不是一件简单的事,要干什么,该怎么做,怎么做得才好. 脚本的概念在程序中十分重要,在游戏开发领域,它更是决定性的.脚本语言让程序员可以区 ...

  4. lua编程之lua与C相互调用

    lua是扩展性非常良好的语言,虽然核心非常精简,但是用户可以依靠lua库来实现大部分工作.除此之外,lua还可以通过与C函数相互调用来扩展程序功能.在C中嵌入lua脚本既可以让用户在不重新编译代码的情 ...

  5. 用VC编译lua源码,生成lua语言的解释器和编译器

    用VC编译lua源码,生成lua语言的解释器和编译器 1.去网址下载源码 http://www.lua.org/download.html 2.装一个VC++,我用的是VC6.0 3.接下来我们开始编 ...

  6. Unity进阶----Lua语言知识点(2018/11/08)

    国内开发: 敏捷开发: 集中精力加班堆出来第一个版本 基本没啥大的bug 国外开发: 1).需求分析: 2).讨论 3).分模块 4).框架 5).画UML图(类图class function)(e- ...

  7. C程序与Lua脚本相互调用

    Lua脚本是一种可用于C程序开发/测试的工具,本篇介绍一下C程序与Lua脚本如何进行相互调用,更加详细的操作参见<Programing in Lua>.本文分为3个部分:1.Windows ...

  8. 【quick-cocos2d-x】Lua 语言基础

    版权声明:本文为博主原创文章,转载请注明出处. 使用quick-x开发游戏有两年时间了,quick-x是cocos2d-Lua的一个豪华升级版的框架,使用Lua编程.相比于C++,lua的开发确实快速 ...

  9. C#与lua相互调用

    Lua是一种很好的扩展性语言,Lua解释器被设计成一个很容易嵌入到宿主程序的库.LuaInterface则用于实现Lua和CLR的混合编程. (一)C#调用Lua 测试环境:在VS2015中建一个C# ...

随机推荐

  1. eclipse,代码中有错误,项目或者java类中却不显示红叉

    修改eclipse代码提示级别1.单个项目修改项目上右键-->properties-->java compiler-->building-->enable project sp ...

  2. 初学python之路-day08

    #学习了编码后,还要了解三种字符串.# 一.# 普通字符串:u''以字符作为输出单位,# print(u'abc') # 用于显示abc# # 二进制字符串:b'' 二进制字符串以字节作为输出单位# ...

  3. mui slider禁止滑动

    网上方法: mui('.mui-slider').slider().setStopped(true); 实际使用 mui('.mui-slider').slider().stopped = true; ...

  4. 树链剖分——模板题hdu3966

    #include<bits/stdc++.h> using namespace std; #define ll long long #define maxn 50005 ]; int he ...

  5. Windows Internals 笔记——线程优先级

    1.每个线程都被赋予0(最低)~31(最高)的优先级数.当系统确定给哪个线程分配CPU时,它会首先查看优先级为31的线程,并以循环的方式进行调度.如果有优先级为31的线程可供调度,那么系统就会将CPU ...

  6. MySQL数据库快速造大量数据

    这段时间做性能测试,发现数据都是分库写进数据库了,并且要构造大量数据,大概4000万的数据量,用普通的方法,写个MySQL函数,之前测试过,大概200万数据也要跑一个多小时,太慢了. 后面研究发现有个 ...

  7. window 服务器 安装 sql server 2008 r2 express 并启用远程访问

    目前市面上的数据库服务器虽然好,但是并不便宜,一个月数千RMB, 我们可以通过在已有的数据库上自建数据库来解决 目前已知的SQL Server 2008 R2的版本有: 企业版.标准版.工作组版.We ...

  8. kafka单机搭建,并测试api

    所用环境: kafka_2.-.gz centos 6.9 nat动态ip 准备工作: ().将防火墙关闭 service iptables stop 临时关闭 chkconfig iptables ...

  9. 20165235 实现pwd功能

    20165235 实现pwd功能 要求 学习pwd命令 2.研究pwd实现需要的系统调用(man -k; grep),写出伪代码 3.实现mypwd 测试mypwd 实现过程 pwd是将当前的文件目录 ...

  10. Win10企业版永久激活方法(cmd命令)

    Win10企业版永久激活工具请点击这里哦>>>>>Win10企业版永久激活工具<<<<< Win10企业版永久激活方法: 1.右击桌面的左下 ...