Unity3D——将Unity中自定义的类映射到Lua中来调用

  众所周知,Unity3D游戏的热更新在IOS平台需要使用Lua语言,虽然效率低于C#的实现,但也是没有办法的办法;现在网上比较流行的是一个基于ToLua的LuaFramework的框架,对于这个框架,网上教程资源比较多,下面就说一下自定义类乃至自定义扩展的内容如何映射到lua中,进而使用。

官网文档地址:http://doc.ulua.org/default.asp

官网框架下载地址:https://github.com/jarjin/LuaFramework_UGUI 

本文以映射自定义类MyClass.cs为例

打开框架后,新建场景

一、创建脚本MyClass.cs如下,名字空间使用“ZHF”

using System;
using System.Collections;

namespace ZHF {
    public class MyClass {
        public const bool Zhang = false;
    }
}

二、在Project面板的Assets->LuaFramework->ToLua->Source->Generate目录下新建脚本,名字为ZHF_MyClassWrap.cs,

内容如下所示

using System;
using LuaInterface;
using ZHF;

public class ZHF_MyClassWrap {
    public static void Register(LuaState L) {
        L.BeginClass(typeof(ZHF.MyClass), typeof(System.Object));
        L.RegFunction("Display", Display);
        L.RegConstant("Zhang", 23333);
        L.EndClass();
    }
    [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
    static int Display(IntPtr L) {
        try {
            ToLua.Push(L, "sad");
            return 1;
        } catch (Exception e) {
            return LuaDLL.toluaL_exception(L, e);
        }
    }
}

在相同目录下面找到LuaBinder.cs,打开并导入刚刚新建的名字空间“ZHF”,并在Bind函数中加入如下代码:

Unity3D——将Unity中自定义的类映射到Lua中来调用_第1张图片

保存上面的之后然后分别依次点击下面1、2两个框

Unity3D——将Unity中自定义的类映射到Lua中来调用_第2张图片


三、待以上编译完成之后,就开始测试部分了

(1)按照以往的习惯,新建一个测试的脚本,挂载在场景中的一个空物体上,脚本如下所示:

Unity3D——将Unity中自定义的类映射到Lua中来调用_第3张图片

(2)lua脚本内容已经存放位置如下所示,脚本名字是LuaTest.lua:

Unity3D——将Unity中自定义的类映射到Lua中来调用_第4张图片

LuaTest.lua存放路径(注意这里和C#的测试脚本的路径对应)

Unity3D——将Unity中自定义的类映射到Lua中来调用_第5张图片


四、运行

Unity3D——将Unity中自定义的类映射到Lua中来调用_第6张图片



end

你可能感兴趣的:(C#,lua,Unity3D)