Lua与C#交互
来源:互联网 发布:苹果6s应用与数据设置 编辑:程序博客网 时间:2024/05/16 06:53
Lua与C#交互
//------------------------------------------------------------------------------// <summary>// 这是一个用以演示LuaInterface的简单程序,通过LuaInterface我们可以实现在C#与Lua的// 的相互通信。Lua是一个轻巧而高效的语言,它可以和任何语言混合使用。Lua语言最初并不是// 为游戏开发而诞生,却是因为游戏开发而成名。目前,在世界上有大量的游戏使用了Lua作为它// 的脚本语言。如图Unity使用了C#作为它的语言,Lua在游戏开发领域发挥着不可忽视的重要作// 用。使用LuaInterface的方法如下:// 1.C#// 注册Lua中可调用方法:// mLua.RegisterFunction(Lua调用方法名, 类, 类.GetMethod(C#方法名));// 注:C#不要使用方法级泛型,即 void Fun<T>(string str);,如果使用,系统自动判定T为第一个参数的类型。// 加载Lua代码// mLua.DoString(Lua代码);// mLua.DoFile(Lua文件绝对路径);// 调用Lua方法// mLua.GetFunction(Lua方法).Call(参数); 注:此处参数不要传递dynamic类型的类,否则Lua中无法获取属性值// 2.Lua// 调用C#方法时需要先注册注册后按照Lua方法处理// </summary>//------------------------------------------------------------------------------using System;using LuaInterface;namespace LuaExample{public class LuaScript{//定义LuaFile属性以便于从外部调用一个Lua脚本private string mLuaFile;public string LuaFile {get {return mLuaFile;}set {mLuaFile = value;}}//Lua虚拟机private Lua mLua;//构造函数public LuaScript (){//初始化Lua虚拟机mLua=new Lua();//注册Printf方法mLua.RegisterFunction("Printf",this,this.GetType().GetMethod("Printf"));}//定义一个C#方法供Lua使用public void Printf(string str){Console.WriteLine("This Method is Invoked by Lua:" + str);}//在C#中调用Lua方法public void DoFile(){if(mLuaFile!="")//执行Lua脚本中的代码mLua.DoFile(mLuaFile);}//在C#中调用Lau方法public void DoString(){//以字符串形式定义的Lua脚本string mFuncString="function Add(a,b) io.write(a+b) end";//在Lua中定义该方法mLua.DoString(mFuncString);//调用该方法mLua.GetFunction("Add").Call(4,8);}//在Lua中调用C#脚本public void Invoke(){//调用注册的Printf方法mLua.GetFunction("Printf").Call("Hello Lua");}}}
接下来我们编写一个主类来调用这个类:
using System;using LuaInterface;namespace LuaExample{class MainClass{public static void Main (string[] args){//实例化LuaSxriptLuaScript mLua=new LuaScript();//设置LuaFilemLua.LuaFile="D:\\test.lua";//调用字符串中定义的Lua方法mLua.DoString();//为美观考虑增加一个空行Console.WriteLine();//执行Lua文件中定义的脚本mLua.DoFile();//调用C#中定义的方法mLua.Invoke();}}}
转载请注明出处,本文作者:秦元培, 本文出处:http://blog.csdn.net/qinyuanpei/article/details/39910099
====================================================================================
结束。
0 0
- Lua与C#交互
- UNITY之Lua与C#交互
- lua与c#交互篇(性能)
- c# lua 简单交互
- c# lua 简单交互
- c# lua 简单交互
- 【Lua】Lua与C交互
- Unity3d ulua c#与lua交互+wrap文件理解
- unity中lua与c#交互性能优化
- Unity热更新(四): C#与Lua交互
- Unity3d ulua c#与lua交互+wrap文件理解
- 在C#环境中与Lua进行交互(一)
- 在C#环境中与Lua进行交互(二)
- Lua 与C交互
- Lua 与 C 交互
- lua与C++交互
- Lua 与 dotnet 交互
- C++与LUA交互
- hdu2157How many ways?? 矩阵快速幂
- 计算机网络之面试常考(转)(后期补充)
- jsp,servlet 连接c3p0数据库连接池是出现的问题
- 【专题】线段树&&树状数组
- MFC六大关键技术
- Lua与C#交互
- Android学习笔记(十六)
- cocos2d-x 3.0学习-使用Physicals创建物理世界
- 坑了爹的Android webview中的height:100%
- 直线,折线,封闭曲线,平面分割区域问题
- Myeclipse10破解
- "Python"学习笔记(一)
- 计算机视觉与模式识别 code
- [Leetcode]Minimum Window Substring