如何在c#项目中集成一个Lua脚本

  介绍

本篇文章为大家展示了如何在c#项目中集成一个Lua脚本,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。


1引入NLua。dll

这个dll是一个很轻量级的库,100 kb左右,引用这个库可以通过Nuget包管理器来引用,当前引用的版本是1.5.7.0,我们看看引用之后的添加了哪些dll。

如何在c#项目中集成一个Lua脚本

这个里面lua54。dll有x86和x64两个类型的版本,这个在使用的时候需要注意因为我们生成设置选择的是任何CPU所以这里会有两个版本的dll,这里使用的时候需要注意。

2具体用法

下面通过一个控制台应用程序来看看这个脚本到底该怎么使用,这里包括直接创建表达式,注册方法并使用lua调用c#函数以及直接导入c#的库然后再调用里面内部的方法这三个方面进行描述。

2.1,直接创建表达式

,,,,我们来直接看控制台程序中的代码

class 程序   ,{   static 才能;void  Main (string [], args)   {才能   ,,using  (var  state =, new  Lua ())   ,,{   ,,,//Evaluating  simple 表达式:   ,,,//Lua 还要return  multiple 价值观,for 却;能够reason  DoString  return  a  array  of 对象   ,,,var  res0 =, state.DoString (“return  10, +, 3 * (5, +, 2)“) [0];   ,,,Console.WriteLine(美元“Output  result0: {res0}“);      ,,,//Passing  raw  values 用,状态:   ,,,double  val =, 12.0;   ,,,的状态(“x"),=, val,,//, Create  a  global  value  & # 39; x,,   ,,,var  res1 =,(双)state.DoString (“return  10, +, * * (5, +, 2)“) [0];   ,,,Console.WriteLine(美元“Output  result1:编写此表达式{res1}“);      ,,,//Retrieving  global 价值观:   ,,,state.DoString (“y =, 10, +, x * (5, +, 2)“);   ,,,double  y =,(双)状态(“y");,//, Retrieve 从而value  of  y   ,,,Console.WriteLine(美元“Y 结果:{y}“),,,,,   ,,,,   ,,,Console.ReadKey ();   ,,}   ,,}}

如何在c#项目中集成一个Lua脚本

注意事项:

,首先来看这个注释:Lua可以返回多个值,为此DoString返回一个对象数组,就是直接调用DoString方法的时候返回的结果是一个object[]类型,所以这里需要取结果的时候要取用第一个

如何在c#项目中集成一个Lua脚本

2.2注册Lua函数

这里我们通过直接在DoString中定义好功能,然后通过调用方法进行调用,我们再来看下面的示例及返回结果

class 程序   ,{   static 才能;void  Main (string [], args)   {才能   ,,using  (var  state =, new  Lua ())   ,,{   ,,,//Retrieving  Lua 功能:   ,,,state.DoString (@" function  ScriptFunc  (val1, val2)   ,,,,,,,,,,if  val1 祝辞val2 然后   ,,,,,,,,,,,return  val1  + 1   ,,,,,,,,,,   ,,,,,,,,,,,return  val2 作用;1   ,,,,,,,,,,结束   ,,,,,,,,,结束   ,,,,,,,,,,);   ,,,var  scriptFunc =,状态(“ScriptFunc"), as  LuaFunction;   ,,,var  funcRes =, scriptFunc.Call(3, 5)当代();   ,,,Console.WriteLine(美元“Func 结果:{funcRes}“);      ,,,Console.ReadKey ();   ,,}   ,,}   }

同样的我们也来看看最终执行的结果

如何在c#项目中集成一个Lua脚本

2.3 Lua调用c#函数

下面的例子包含了几种不同的参数类型及返回类型用来演示调用的完整过程。

using 系统;   using 来;   using  NLua;      namespace  NLuaConsoleApp   {   class 程序   ,{   static 才能;void  Main (string [], args)   {才能   ,,using  (var  state =, new  Lua ())   ,,{   ,,,////- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lua调用c#函数   ,,,TestClass  obj =, new  TestClass ();      ,,,//,注册CLR对象方法到Lua,供Lua调用,typeof (TestClass) .GetMethod (“TestPrint")   ,,,state.RegisterFunction (obj,“TestPrint",, obj.GetType () .GetMethod (“TestPrint"));      null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

如何在c#项目中集成一个Lua脚本