Lua和C#代码交互(VS)
来源:互联网 发布:淘宝开宠物用品店 编辑:程序博客网 时间:2024/06/05 02:15
一、配置
1.需要将LuaInterface.dll和luanet.dll放置在[工程名\bin\Debug]文件夹下,C#脚本中引用LuaInterface命名空间
2.C#中以lua.Dofile方式调用的lua脚本需同样放置在[工程名\bin\Debug]文件夹下
3.Lua中require "luanet",通过luanet.load_assembly("LuaTest")引入命名空间,通过Program=luanet.import_type("LuaTest.Program")引入类
二、lua调用C#类
1.在lua中引入C#的类后,若将C#类实例化后使用,可以用[实例名.变量名]来调用C#类中的静态变量和非静态变量(变量为private一样可以调用)
2.在lua中引入C#的类后,可以将C#类实例化后使用其中非静态方法[实例名:方法名],静态方法则用[类名.方法名]进行调用(方法为private一样可以调用)
3.out参数的方法使用时不用传入out参数,out值会通过接收返回的值来手动修改,即函数会返回两个值(void方法会返回nil)
4.ref参数的方法使用时需要传入ref参数,ref值会通过接收返回的值来手动修改,即函数会返回两个值(void方法会返回nil)
require "luanet"luanet.load_assembly("System")luanet.load_assembly("LuaTest")Int32=luanet.import_type("System.Int32")Program=luanet.import_type("LuaTest.Program")--[[]num=Int32.Parse("218")--print(Int32)--print(num)program1=Program()print(program1.names)program1:NormolMethod()Program.StaticMethod()]]--program2=Program()void,length= program2:TestOut("This is it")print(void,length)void,length=program2:TestRef("我的",14)print(void,length)
Lua脚本内容
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using LuaInterface;namespace LuaTest{ class Program { public string name = "Zack"; public static string names = "十二金人"; static void Main(string[] args) { Lua lua = new Lua();//lua解释器 lua.DoFile("LuaUseCSClass.lua");//解释lua文件 } public void NormolMethod() { Console.WriteLine("普通方法"); } public static void StaticMethod() { Console.WriteLine("静态方法"); } public void TestOut(string name,out int length) { Console.WriteLine(name); length = name.Length; } public void TestRef(string name, ref int length) { Console.WriteLine(name); Console.WriteLine(length); length = name.Length; } }}C#脚本内容
三、C#中调用Lua
1.通过Lua lua = new Lua();创建一个Lua解释器,作为操作的对象
2.生成Lua‘变量并对Lua变量进行赋值lua["num"] = 123;
3.Dostring调用lua解释器执行字符串内容,其返回值可以用object[]来接收
object[] values=lua.DoString("return num,str");
4.lua.DoFile("myLua.lua");//解释lua文件(lua脚本需同样放置在[工程名\bin\Debug]文件夹下)
////静态方法注册到lua解释器中 //lua.RegisterFunction("StaticMethod", null, typeof(Program).GetMethod("StaticMethod")); //lua.DoString("StaticMethod()"); ////非静态方法注册到lua解释器中 //Program program = new Program(); //lua.RegisterFunction("NormolMethod", program, program.GetType().GetMethod("NormolMethod")); //lua.DoString("NormolMethod()");
- Lua和C#代码交互(VS)
- c#和 lua 简单交互
- [C#/Lua]C#和Lua交互的Demo
- c# lua 简单交互
- Lua与C#交互
- c# lua 简单交互
- c# lua 简单交互
- c++和lua交互
- C和lua交互
- lua和c++交互。
- lua 和xml交互
- lua和C交互
- Lua和C++交互
- Lua和Unity交互
- Lua和C++交互
- lua和c++交互
- Lua和C++交互
- lua和C++交互
- 面试题中关于String的创建和赋值的自己的理解
- Java中禁止的包名(Prohibited package name)
- 第二节 常用标签的属性
- Struts2文件上传FileNotFoundException问题
- 【CJOJ1167】【洛谷1894】[USACO4.2]完美的牛栏
- Lua和C#代码交互(VS)
- Private Set Intersection(PSI)简介和资料分享
- tensorflow学习:定义变量
- JAVA小知识
- centOS 设置vsftp本地用户登录
- PowerDesiger导出word表结构
- 2015年沈阳区域赛M题 Meeting(最短路)
- Stanford Parser 下载使用
- R及Python的数据分析入阶—小白必看