lua学习笔记3--lua与c#交互
LuaInterface是C#与Lua连接的桥梁
LuaInterface是一个开源项目工程,内部有两个核心DLL文件:
LuaInterface.dll:在C#中操作Lua代码需要依赖该文件;
luanet.dll:在Lua中访问C#的类库脚本需要依赖该文件
将两个dll文件拷贝到项目工程
项目工程设置"引用"导入LuaInterface.dll
将两个dll的属性都设置成"如果较新则复制"
操作:
引入LuaInterface命名空间
实例化Lua解析器对象[在C#中执行Lua代码,靠的就是这个对象]
Lua lua = new Lua();
Lua解析器对象操作Lua代码空间
使用Lua解析器对象,往Lua代码空间内写入变量,然后再读取使用变量
(绝大多数情况,直接在C#中使用Lua解析器对象,加载一个Lua脚本文件进行运行)
C#内执行Lua代码:
语法格式 Lua解析器对象.DoString("Lua代码");
注意:
DoString()方法主要用于执行一些较短的Lua代码片段
DoString()方法执行过的代码,都会添加到Lua代码空间,在Lua文件中,是直接可以访问到这些代码的
//创建一个Lua解析器
Lua lua = new Lua(); //变量的声明和访问
lua.DoString("name = 'cxk' age = 72 address = 'beijing'");
lua.DoString("print(name, age, address)"); //for循环语句
lua.DoString(@"for i = 0, 10, 1 do
print(i)
end"); //函数的定义与调用
lua.DoString(@"function Show()
print('lua show Function')
end
Show()
"); //table数组声明与访问
lua.DoString("myArray = { 'AAA', 'BBB', 'CCC', 'DDD'}");
lua.DoString(@"for i = 1, table.getn(myArray), 1 do
print(myArray[i])
end");
C#内执行Lua文件
Lua解析器对象.DoFile("[路径]Lua文件.lua") lua文件编码记得改为UTF-8或者ANSI
Lua lua = new Lua();
lua.DoFile("xxx.lua"); //GetString() 取Lua中字符串数据
lua.GetString("name"); //GetNumber() 取Lua中数值数据
lua.GetNumber("age"); //GetFunction 取Lua中的函数,只需写函数名
LuaFunction luaShow = lua.GetFunction("Show");
luaShow.Call();//执行lua中的函数
LuaFunction add = lua.GetFunction("Add");
System.Object[] obj = add.Call(, );
lua访问已存在的C#代码
1导入luanet.dll require "luanet"
2获取程序集 luanet.load_assembly("程序集名")
3获取类型 变量名=luanet.import_type("程序集名.类名")
require "launet" luanet.load_assembly("three") Calc = luanet.import_type("three.Calc") print(Calc.name)
print(Calc.Jia(, ))
lua访问C#类库
require "launet"
luanet.load_assembly("System")
Console = luanet.import_type("System.Console")
Console.WriteLine("")
最新文章
- Hprose question
- ubuntu14.04下的NVIDIA Tesla K80显卡驱动的安装教程
- 关于JQUERY操作XML问题!
- 一个DOM元素绑定多个事件时,先执行冒泡还是捕获
- 怎么样打印加密PDF文件
- 原生JS默认设置默认值的写法
- 全文索引之nutch与hadoop(转)
- THREE.js代码备份——canvas_lines(随机点、画线)
- yii 权限分级式访问控制的实现(非RBAC法)——已验证
- dnsever 邮件记录
- (转)iOS7界面设计规范(5) - UI基础 - 导航
- openfire学习4------->;android客户端聊天开发之聊天功能开发
- springmvc基础学习2---简单配置文件
- idea 排除编译 参考
- Django 上下文处理器
- Python-递归初识-50
- 关于Gerrit code review 介绍与安装
- std::set 中内部元素有序条件删除的理解
- web.xml中对post请求的乱码问题解决
- 前后端分离最佳实现,使用Nuxt.js快速搭建单页SSR应用
热门文章
- 微信小程序 base64ToArrayBuffer
- Linux文件系统之删除文件、文件夹(rm,rmdir)
- Math.pow
- dockerfile-maven plugin自动镜像制作并发布
- CodeForces 835D - Palindromic characteristics | Codeforces Round #427 (Div. 2)
- 错误信息:[ERR] Sorry, can't connect to node 10.211.55.8:7001
- 3 Servlet、Filter使用
- 洛谷 P1355 神秘大三角(计算几何基础)
- Ubuntu 出现 Invalid operation update 或 Invalid operation upgrade的解决办法
- JavaScript设计模式—适配器模式