开篇前言:
学习 tolua 需要有 lua 基础。学习 tolua 需要有 lua 基础。学习 tolua 需要有 lua 基础
重要的事情说三遍

-------------准备工作-----------------
tolua框架 git hub 下载地址:

方法一:
​​​ https://github.com/topameng/tolua ​​ github 打不开的建议更改 hosts 地址

方法二: github.com

ToLua(LuaFramework) - ToLua开篇与项目演示案例-tolua最全教程_System

上边儿的两种方式都可以进行一个下载,下载完了以后我们能够得到一个这样的压缩包:

ToLua(LuaFramework) - ToLua开篇与项目演示案例-tolua最全教程_System_02


然后就是解压,完成了以后 ,使用 Unity 打开,需要注意的是 最好使用 2017版本及以下的

打开的时候可能稍微的有点慢,所以这里需要拿出约会等女孩子的那个精神…哈哈哈,我是等够了。后来

我:我已经到了你宿舍楼下(其实我还在宿舍翘着二郎腿)

女孩子:嗯呢,那我下来了

我:好的,别让我等太久哦(这个时候还能抽根烟儿,洗个脸,吹吹头发然后出门儿,你会发现女孩子还没出门儿…)继续回到我们的正题:

ToLua(LuaFramework) - ToLua开篇与项目演示案例-tolua最全教程_Lua_03


打开工程以后会弹出一个这样的提示框,生成一些文件

就像是前边儿说的,如果你用的是 2017 以上的话,那么会出现报错:

ToLua(LuaFramework) - ToLua开篇与项目演示案例-tolua最全教程_tolua_04


这是因为新版本的Unity有些属性和接口已经废弃了的原因,我们需要特殊处理一下

一个是Light类,一个是QualitySettings类,这两个类我们一般不需要在lua中使用,所以我们不对他们生产Wrap即可:

打开CustomSettings.cs,把 _GT(typeof(Light)), 和 _GT(typeof(QualitySettings)), 这两行注释掉

然后单击菜单【Lua】-【Clear wrap files】清理掉Wrap

然后再单击菜单【Lua】-【Generate All】重新生成Wrap,

然后再重新点击菜单【LuaFramework】-【Build Windows Resource】生成lua资源。

生成成功后,我们可以在StreamingAssets中看到很多AssetBundle文件

ToLua(LuaFramework) - ToLua开篇与项目演示案例-tolua最全教程_Lua_05


但是博主建议大家的话上来先不要玩高配,先一步一步来。老老实实的用 2017 版的

这个时候,我们再来看看他 的资源管理窗口里边都是有那些东西的。

ToLua(LuaFramework) - ToLua开篇与项目演示案例-tolua最全教程_tolua_06


打开了这个CS类以后,可以看到有一些看到这个脚本那些类作为静态类,那些类需要导出,那些委托需要导出,我们需要输出的lua 类型也需要在 这里进行一个导出。在 tolua 中已经为我们提供了大部分的 Unity 类型,如果说我们需要导入自己的类型,或者说 tolua 没有的类型的时候,那我们就在其中进行一个添加就行了

ToLua(LuaFramework) - ToLua开篇与项目演示案例-tolua最全教程_lua_07


这个 Lua 文件夹中存放的就是我们的 lua 脚本

ToLua(LuaFramework) - ToLua开篇与项目演示案例-tolua最全教程_System_08


然后就是我们 的ToLua 文件夹下边的 Soure 文件夹下边儿的 LuaConst.cs 文件:存放的是 lua 路径以及一些配置文件。

Generate 就是一系列的 Lua 文件:主要是生成交互的绑定代码,我们项目中的 C# 和 Lua 交互主要是靠这个文件夹来进行。

ToLua(LuaFramework) - ToLua开篇与项目演示案例-tolua最全教程_Lua_09


然后就是一些 tolua 的实例代码,可以利用它进行学习

ToLua(LuaFramework) - ToLua开篇与项目演示案例-tolua最全教程_Lua_10


--------------项目开发步骤----------

这边我是写在 Tolua 下边儿的 Examples 文件夹中,也就是说相当是个实例 项目

首先的话创建一个空的场景:

ToLua(LuaFramework) - ToLua开篇与项目演示案例-tolua最全教程_lua_11


只放一个空的 GameRoot 即可。

ToLua(LuaFramework) - ToLua开篇与项目演示案例-tolua最全教程_System_12


脚本代码中编写:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TrueProject : MonoBehaviour {

public static string ShowText()
{
return "this is China WuHan Developer true\n"+ "球球交流群 :1067304356";
}
}

这里我们的目的就是想 在 Unity 中让 lua 脚本调用这里的 Csharp脚本,从而输出字符串

紧接着:我们打开这个脚本

ToLua(LuaFramework) - ToLua开篇与项目演示案例-tolua最全教程_lua_13


然后在 CustomSettings .cs 文件中添加上我们刚刚创建的 C# 脚本,后边儿有一个逗号,别忘了

ToLua(LuaFramework) - ToLua开篇与项目演示案例-tolua最全教程_Lua_14


然后回到我们的 Unity 界面。

ToLua(LuaFramework) - ToLua开篇与项目演示案例-tolua最全教程_System_15


这一步操作就是清空 wrok 文件,然后 Lua 就会重新生成一份新的文件出来。

ToLua(LuaFramework) - ToLua开篇与项目演示案例-tolua最全教程_Lua_16


直接 Next (确定)下一步即可

ToLua(LuaFramework) - ToLua开篇与项目演示案例-tolua最全教程_lua_17


然后就可以看到这样的一个 cs 文件了。这个也就是刚刚我们写的那个 测试案例代码了,用于和 lua 进行交互的。

ToLua(LuaFramework) - ToLua开篇与项目演示案例-tolua最全教程_System_18


打开以后是这样的。可以看一下里边儿的一些方法和内容

至此我们的 csharp 文件差不多创建好了,然后创建一些 lua 文件。因为我们的 lua 文件没办法直接进行创建,所以我们需要打开文件夹,新建一个 txt,然后 将后缀改为 .lua ,不知道怎么该的我也贴在下面了。

ToLua(LuaFramework) - ToLua开篇与项目演示案例-tolua最全教程_System_19


创建完成了以后就是这样的

ToLua(LuaFramework) - ToLua开篇与项目演示案例-tolua最全教程_lua_20


这里我使用的是 vsCode 编辑器 建议跟博主保持一致

现在就需要跟刚刚创建出来的 Csharp 代码进行一个交互了

ToLua(LuaFramework) - ToLua开篇与项目演示案例-tolua最全教程_System_21


这样的话就完成了 lua 脚本的创建了 OK 我知道,但是温馨提示,抄的时候别抄错了

程序猿 == 懒

Lua 脚本

--定义一句局部变量
local h = TrueProject.ShowText()
--输出 csharp 中的 字符串儿
print(h)

然后回到我们的 Unity 编辑器这边儿再来创建一个 新的脚本叫做 :GameRoot(游戏启动器)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//引入命名空间
using LuaInterface;

public class GameRoot : MonoBehaviour {
//不要一开始就 new , 先将资源进行一个释放
private LuaState lua = null;
void Start () {
//自定义加载器,加载 lua
new LuaResLoader();
//初始化虚拟机
lua = new LuaState();
//开启虚拟机
lua.Start();
//注册类
LuaBinder.Bind(lua);
//打开 lua 文件
lua.DoFile("TruePro.lua");
}
}

然后将我们的 GameRoot 脚本拖动到我们的 GameRoot 游戏对象身上

到了这里我们 就完成了 在 Unity 中使用 lua 调用 csharp 中的字符串了。

可想而知:结果完美运行

ToLua(LuaFramework) - ToLua开篇与项目演示案例-tolua最全教程_lua_22