lua语言自学知识点----Lua与.Net相互调用
知识点:
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相互调用的更多相关文章
- lua语言自学知识点----简单了解
零碎知识点: lua:用lua写UI,更新UI,因为lua可直接跨平台解析,不需要编译,方便更新------>热更新. c#反射也可以达到更新,但非常麻烦,切不支持iOS. 在lua中一个人汉字 ...
- lua脚本之lua语言简介以及lua的安装
本博主不擅于进行文字创作,所以,相当一部分文字皆复制于其他博文.还希望能够得到谅解. 一.Lua语言简介 Lua是一个免费的开源软件,可以免费用于科研及商业.Lua具有一个专家团队在维护和升级,其设 ...
- Lua语言自学之01.基础概念的理解
编程不只是这么简单,它的思维是理性的编程思维,操纵机器干事本来就不是一件简单的事,要干什么,该怎么做,怎么做得才好. 脚本的概念在程序中十分重要,在游戏开发领域,它更是决定性的.脚本语言让程序员可以区 ...
- lua编程之lua与C相互调用
lua是扩展性非常良好的语言,虽然核心非常精简,但是用户可以依靠lua库来实现大部分工作.除此之外,lua还可以通过与C函数相互调用来扩展程序功能.在C中嵌入lua脚本既可以让用户在不重新编译代码的情 ...
- 用VC编译lua源码,生成lua语言的解释器和编译器
用VC编译lua源码,生成lua语言的解释器和编译器 1.去网址下载源码 http://www.lua.org/download.html 2.装一个VC++,我用的是VC6.0 3.接下来我们开始编 ...
- Unity进阶----Lua语言知识点(2018/11/08)
国内开发: 敏捷开发: 集中精力加班堆出来第一个版本 基本没啥大的bug 国外开发: 1).需求分析: 2).讨论 3).分模块 4).框架 5).画UML图(类图class function)(e- ...
- C程序与Lua脚本相互调用
Lua脚本是一种可用于C程序开发/测试的工具,本篇介绍一下C程序与Lua脚本如何进行相互调用,更加详细的操作参见<Programing in Lua>.本文分为3个部分:1.Windows ...
- 【quick-cocos2d-x】Lua 语言基础
版权声明:本文为博主原创文章,转载请注明出处. 使用quick-x开发游戏有两年时间了,quick-x是cocos2d-Lua的一个豪华升级版的框架,使用Lua编程.相比于C++,lua的开发确实快速 ...
- C#与lua相互调用
Lua是一种很好的扩展性语言,Lua解释器被设计成一个很容易嵌入到宿主程序的库.LuaInterface则用于实现Lua和CLR的混合编程. (一)C#调用Lua 测试环境:在VS2015中建一个C# ...
随机推荐
- Cyclone IV FPGA 器件笔记
LE(逻辑单元)操作模式 1) 正常模式 2)算术模式 可以看到对于Cy4来说正常模式和算术模式的区别就是正常模式有一个4输入LUT没有cout进位输出,而算术模式有两个3输入LUT有cout进位输出 ...
- 定时-thinkphp
链接:https://pan.baidu.com/s/1wHayb9fYOiiMB3Scms0iRQ 提取码:51ex 复制这段内容后打开百度网盘手机App,操作更方便哦
- 创建Git 仓库及 克隆、拉取、和推送操作
打开网址: https://github.com/ 登录上自己创建的 Git账号 一. 创建Git 仓库 start a project---> 输入仓库 ...
- Git初始配置和基本使用
初次运行Git前的配置 本文是在安裝完git以后首先应做到一些配置,安装教程可以参考廖雪峰git教程 用户信息 当安装完 Git 应该做的第一件事就是设置你的用户名称与邮件地址. 这样做很重要,因为每 ...
- Bootstrap-datepicker3官方文档中文翻译---Markup/标记(原文链接 http://bootstrap-datepicker.readthedocs.io/en/latest/index.html)
Markup/标记 下面是已经支持的标签的例子.这些标签本身不会提供DatePicker控件:你需要在标签上实例化Datepicker. input/输入框 最简单的例子: input获得焦点 (使用 ...
- python Request模块
---恢复内容开始--- Request的五种请求方式: request.get() request.post() request.head() requst.put() request.patch( ...
- 杂记:腾讯暑期实习 Web 后端开发面试经历
今天面试(一面)腾讯暑期实习 Web 后端开发,一言难尽. 第一部分,常规的自我介绍. 介绍完,面试官问我对人工智能有什么理解?深度学习和机器学习的区别?对调参有什么见解?语音识别中怎样运用了机器学习 ...
- Docker 学习5 Docker容器网络
一.内核网络名称空间 1.可通过ip netns进行操作 [root@localhost /]# ip netns help Usage: ip netns list ip netns add NAM ...
- ZJOI2019Day2 游记
原文链接www.cnblogs.com/zhouzhendong/p/ZJOI2019Day2 游记 4-23 乘车. 报到. 自闭. 晚上没睡好. 4-24 上午张哲宇讲课. 幕后点人上去讲题. 然 ...
- Manacher算法 (马拉车算法)
#include<iostream> #include<string.h> #include<algorithm> using namespace std; ]; ...