对于一些程序需要用户自定义功能的情况 可以给用户预留参数设置的接口 但是这个办法有时候实现起来繁琐而且功能限制多一些 还要重新打包 重新发布, 于是 有聪明的小伙伴想到了可以用脚本的方式实现 用脚本自定义性更强 而且更加轻松(但是对于终端用户来说 可能学习成本会多一点点 但是完全可以自己预留接口 自己实现)
MoonSharp
什么是 MoonSharp,为什么用 MoonSharp
MoonSharp 是一个用 纯 C# 编写的 Lua 解释器,专为 .NET 平台(C#、Unity、Xamarin、.NET Core/.NET 5+)设计。它让你能在 C# 程序中无缝嵌入 Lua 脚本,实现动态逻辑扩展、热更新、用户自定义脚本等功能。
它不是调用原生 Lua DLL,而是完全用 C# 重写的 Lua 5.2 兼容引擎 —— 这意味着:
安装
Install-Package MoonSharp
DEMO
using MoonSharp.Interpreter;
class Progran
{
public static void Main()
{
MoonSharpFactorial();
}
public static double MoonSharpFactorial()
{
string scriptStr = @"
if CsharpFunction() then
print(""真的"");
else
print(""假的"");
end
return 365;
";
// 这是创建一个新的环境 里面可以加入全局变量 供lua调用
var script = new Script();
script.Globals["CsharpFunction"] = (Func<bool>)CsharpFunction;
DynValue res = script.DoString(scriptStr);
Console.WriteLine(res.Number);
return res.Number;
}
public static bool CsharpFunction()
{
Console.WriteLine("这是c#方法");
return true;
}
}
参考链接
本文由 jxxxy 创作,采用 知识共享署名4.0 国际许可协议进行许可。
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。