博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vJine 第三波 之 Lua 来袭 vJine.Lua
阅读量:5069 次
发布时间:2019-06-12

本文共 3046 字,大约阅读时间需要 10 分钟。

vJine.Lua


vJine.Lua是Lua语言的C#封装库,可实现通过C#直接运行Lua脚本并与Lua脚本交互的功能。


1. 授权:

相关资源:

nuget:()

API文档:()

Lua官网:()

Lua中国开发者:()
babelua(基于Visual Studio扩展的Lua编辑器):()

QQ群:115051701

2. 说明:

1)vJine.Lua采用C++/CIL封装自Lua,当前Lua版本为(Lua 5.3.0)2)暂不支持方法重载,注入时同名方法将被覆盖。

3. 功能简介:

//引用命名空间

using vJine.Lua;

//获取Lua版本

string V = LuaContext.Version;

//实例化LuaContext

LuaContext luaContext = new LuaContext();
string vars_name = "vJine.Lua.Vars.bool";

//设置与读取堆栈变量

bool v_bool = true;luaContext.set(true);luaContext.get(out v_bool);Debug.Assert(v_bool == true);luaContext.set(false);luaContext.get(out v_bool);Debug.Assert(v_bool == false);

//设置与读取全局变量

luaContext.set(vars_name, true);luaContext.get(vars_name, out v_bool);Debug.Assert(v_bool == true);luaContext.set(vars_name, false);luaContext.get(vars_name, out v_bool);Debug.Assert(v_bool == false);

//注册:匿名方法

luaContext.reg("vJine.Lua.funcs.anony", new Action
((MyStatus E) => {
string msg = string.Format("result[anonymous]:{0}", E);}));

//注册:静态方法

luaContext.reg("vJine.Lua.funcs.M", new Action
(MyClass.M));

//注册:实例方法

MyClass xq = new MyClass();luaContext.reg("vJine.Lua.funcs.m", new Action
(x1.m));

//注册类:默认名称

luaContext.reg
();

//注册类:自定义名称

luaContext.reg
("vJine.Lua.YourClass");

//注入脚本:

object[] R = luaContext.inject(                "function callback(my_arg) return my_arg .. ' on_the_fly' end return true, 1.234, callback('vJine.Lua')");

//调用脚本

object[] Obj = luaContext.exec("callback", "vJine.Lua");

//加载脚本:

R = luaContext.load("d:/vJine.Lua/start.lua");

//打印堆栈变量:

luaContext.print_vars();

//打印全局变量:

luaContext.print_var("vJine.Lua.UT.MyClass");

//类定义:

public class MyClass {
public MyClass My {
get; set; } public bool B {
get; set; } public bool? b {
get; set; } public byte[] B_ {
get; set; } public double D {
get; set; } public double d {
get; set; } public Guid G {
get; set; } public Guid? g {
get; set; } public Guid[] G_ {
get; set; } public string S {
get; set; } public string s {
get; set; } public string[] s_ {
get; set; } public DateTime DT {
get; set; } public DateTime? dt {
get; set; } public DateTime[] DT_ {
get; set; } public MyStatus E {
get; set; } public MyStatus? e {
get; set; } public MyStatus[] E_ {
get; set; } publicstaticvoidM(MyStatusE){
string msg = string.Format("result[anonymous]:{0}", E); } publicvoidm(MyStatusE){
string msg = string.Format("result[anonymous]:{0}", E); } publicstaticstringSM(inta,stringb){
return string.Format("SM:Result:a,{0};b,{1}", a, b); } publicstringIM(inta,stringb){
return string.Format("IM:Result:a,{0};b,{1}", a, b); } publicstringshow_properties(){
return string.Format("Properties:b,{0};d,{1};s,{2}", this.B, this.D, this.s); }}

转载于:https://www.cnblogs.com/vjine/p/vJine_Lua.html

你可能感兴趣的文章
21.Longest Palindromic Substring(最长回文子串)
查看>>
HDU 4635 Strongly connected
查看>>
ASP.NET/C#获取文章中图片的地址
查看>>
Spring MVC 入门(二)
查看>>
Java处理多人同时读写文件的文件锁处理
查看>>
格式化输出数字和时间
查看>>
页面中公用的全选按钮,单选按钮组件的编写
查看>>
判断文本框输入的文字长度
查看>>
java笔记--用ThreadLocal管理线程,Callable<V>接口实现有返回值的线程
查看>>
Scaling Pinterest - From 0 To 10s Of Billions Of Page Views A Month In Two Years
查看>>
SelectSort 选择排序
查看>>
关于android 加载https网页的问题
查看>>
BZOJ 1047 HAOI2007 理想的正方形 单调队列
查看>>
各种语言推断是否是手机设备
查看>>
这个看起来有点简单!--------实验吧
查看>>
小知识:js如何更改css样式
查看>>
PHP count down
查看>>
JVM参数调优:Eclipse启动实践
查看>>
(旧笔记搬家)struts.xml中单独页面跳转的配置
查看>>
不定期周末福利:数据结构与算法学习书单
查看>>