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("")

最新文章

  1. Hprose question
  2. ubuntu14.04下的NVIDIA Tesla K80显卡驱动的安装教程
  3. 关于JQUERY操作XML问题!
  4. 一个DOM元素绑定多个事件时,先执行冒泡还是捕获
  5. 怎么样打印加密PDF文件
  6. 原生JS默认设置默认值的写法
  7. 全文索引之nutch与hadoop(转)
  8. THREE.js代码备份——canvas_lines(随机点、画线)
  9. yii 权限分级式访问控制的实现(非RBAC法)——已验证
  10. dnsever 邮件记录
  11. (转)iOS7界面设计规范(5) - UI基础 - 导航
  12. openfire学习4------->android客户端聊天开发之聊天功能开发
  13. springmvc基础学习2---简单配置文件
  14. idea 排除编译 参考
  15. Django 上下文处理器
  16. Python-递归初识-50
  17. 关于Gerrit code review 介绍与安装
  18. std::set 中内部元素有序条件删除的理解
  19. web.xml中对post请求的乱码问题解决
  20. 前后端分离最佳实现,使用Nuxt.js快速搭建单页SSR应用

热门文章

  1. 微信小程序 base64ToArrayBuffer
  2. Linux文件系统之删除文件、文件夹(rm,rmdir)
  3. Math.pow
  4. dockerfile-maven plugin自动镜像制作并发布
  5. CodeForces 835D - Palindromic characteristics | Codeforces Round #427 (Div. 2)
  6. 错误信息:[ERR] Sorry, can't connect to node 10.211.55.8:7001
  7. 3 Servlet、Filter使用
  8. 洛谷 P1355 神秘大三角(计算几何基础)
  9. Ubuntu 出现 Invalid operation update 或 Invalid operation upgrade的解决办法
  10. JavaScript设计模式—适配器模式