当前位置:   article > 正文

[C#实战][Xlua实战]如何在一个非Unity C#(Core/.Net) 项目集成 Xlua??? 如果喜欢的话⇒ ⇒ ⇒ 点赞文章!! GithubStar!!_xlua winform

xlua winform

在这里插入图片描述

Xlua官方文档

Xlua大家都知道,并且熟悉Unity的用的很多,但是我这边项目中用到了服务端.net使用xlua的情况,专门参考官方的例子实现了一个,如果喜欢的话⇒ ⇒ ⇒ 点赞文章!! GithubStar!!

xLua通用版本

xLua通用版本

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已经通过生成代码适配。

Hotfix

对已经生成了代码的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();
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

.net Core相关资料

我的.Net Core安装问题等…

我的摸索

1.编译lua库

运行make_win64_lua53.bat
在这里插入图片描述在这里插入图片描述
生成的文件用在我的项目中
在这里插入图片描述

2.打开官方示例的vs2013的示例sln

在这里插入图片描述打开后项目很清晰…
在这里插入图片描述

3.开始我自己的实现

核心代码很简单…
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();
        }
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

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())
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

4.运行效果

4.1vs2019运行

在这里插入图片描述

4.2luaperfect 调试工具运行

在这里插入图片描述

5.Github:MyDotXlua⇒ Star!!!

有图文说明文档…
LuaPerfect-Debug调试使用文档.doc
DotXlua说明文档.doc

MyDotXlua⇒ GithubStar

6.TODO:xlua的热更新

还没尝试Xlua的热更,应该是能用的…

7.linux部署启动…

linux部署启动

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/960517
推荐阅读
相关标签
  

闽ICP备14008679号