赞
踩
Xlua大家都知道,并且熟悉Unity的用的很多,但是我这边项目中用到了服务端.net使用xlua的情况,专门参考官方的例子实现了一个,如果喜欢的话⇒ ⇒ ⇒ 点赞文章!! GithubStar!!
xLua通用版本致力于在C#环境提供lua脚本支持。相比Unity版本,仅去掉了诸如print重定向到Console窗口,Unity专用的脚本加载器。其它的一切功能都保留。特性列表请看这里。
将XLua.Mini.dll放入工程,对应版本的xlua本地动态库放到能通过pinvoke加载的路径下(比如程序执行目录)。
XLua.Mini.dll是通过反射来实现lua与C#间的交互,需要更高性能,可以通过生成代码获得。
1、按教程XLua的配置.doc配置好要生成的类型;
2、重新编译后,用配套的工具XLuaGenerate对工程的编译结果(exe或者dll)执行代码生成:XLuaGenerate xxx.exe/xxx.dll,生成代码会放在当前目录下的Gen目录。
3、新建一个和原来一样的工程,添加XLUA_GENERAL宏
4、删除XLua.Mini.dll,加入XLua的配套源码包(发布包的Src目录),加入步骤2的生成代码;
5、这工程生成exe或者dll已经通过生成代码适配。
对已经生成了代码的exe或者dll,用工具XLuaHotfixInject执行注入即可,Hotfix特性的详细使用请看Hotfix操作指南
using XLua;
public class XLuaTest
{
public static void Main()
{
LuaEnv luaenv = new LuaEnv();
luaenv.DoString("CS.System.Console.WriteLine('hello world')");
luaenv.Dispose();
}
}
运行make_win64_lua53.bat
生成的文件用在我的项目中
打开后项目很清晰…
核心代码很简单…
Program.cs
using System;
using XLua;
namespace MyDotXlua
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("CSharp-Hello World!");
//1.创建一个Xlua
LuaEnv luaenv = new LuaEnv();
//2.设置全局LuaCallCSharp方法
LuaCallCSharpDemo CSharpSystem = new LuaCallCSharpDemo();
luaenv.Global.Set("CSharpSystem", CSharpSystem);
//3.执行.lua文件
luaenv.DoString("dofile('MyDotXlua.lua')");
//4.关闭Xlua
//luaenv.Dispose();
//5.不退出
Console.ReadLine();
}
}
}
MyDotXlua.lua
local _, LuaDebuggee = pcall(require, 'LuaDebuggee')
if LuaDebuggee and LuaDebuggee.StartDebug then
if LuaDebuggee.StartDebug('127.0.0.1', 9826) then
print('LuaPerfect: Successfully connected to debugger!')
else
print('LuaPerfect: Failed to connect debugger!')
end
else
print('LuaPerfect: Check documents at: https://luaperfect.net')
end
print("CSharpCallXlua-Hello World!")
local CSharpSystem = CSharpSystem;
print("当前时间:"..CSharpSystem:GetCurrentSeconds())
有图文说明文档…
LuaPerfect-Debug调试使用文档.doc
DotXlua说明文档.doc
还没尝试Xlua的热更,应该是能用的…
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。