开篇前言:
学习 tolua 需要有 lua 基础。学习 tolua 需要有 lua 基础。学习 tolua 需要有 lua 基础
重要的事情说三遍
-------------准备工作-----------------
tolua框架 git hub 下载地址:
方法一:
https://github.com/topameng/tolua github 打不开的建议更改 hosts 地址方法二: github.com
上边儿的两种方式都可以进行一个下载,下载完了以后我们能够得到一个这样的压缩包:
然后就是解压,完成了以后 ,使用 Unity 打开,需要注意的是 最好使用 2017版本及以下的
打开的时候可能稍微的有点慢,所以这里需要拿出约会等女孩子的那个精神…哈哈哈,我是等够了。后来
我:我已经到了你宿舍楼下(其实我还在宿舍翘着二郎腿)
女孩子:嗯呢,那我下来了
我:好的,别让我等太久哦(这个时候还能抽根烟儿,洗个脸,吹吹头发然后出门儿,你会发现女孩子还没出门儿…)继续回到我们的正题:
打开工程以后会弹出一个这样的提示框,生成一些文件
就像是前边儿说的,如果你用的是 2017 以上的话,那么会出现报错:
这是因为新版本的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文件
但是博主建议大家的话上来先不要玩高配,先一步一步来。老老实实的用 2017 版的
这个时候,我们再来看看他 的资源管理窗口里边都是有那些东西的。
打开了这个CS类以后,可以看到有一些看到这个脚本那些类作为静态类,那些类需要导出,那些委托需要导出,我们需要输出的lua 类型也需要在 这里进行一个导出。在 tolua 中已经为我们提供了大部分的 Unity 类型,如果说我们需要导入自己的类型,或者说 tolua 没有的类型的时候,那我们就在其中进行一个添加就行了
这个 Lua 文件夹中存放的就是我们的 lua 脚本
然后就是我们 的ToLua 文件夹下边的 Soure 文件夹下边儿的 LuaConst.cs 文件:存放的是 lua 路径以及一些配置文件。
Generate 就是一系列的 Lua 文件:主要是生成交互的绑定代码,我们项目中的 C# 和 Lua 交互主要是靠这个文件夹来进行。
然后就是一些 tolua 的实例代码,可以利用它进行学习
--------------项目开发步骤----------
这边我是写在 Tolua 下边儿的 Examples 文件夹中,也就是说相当是个实例 项目
首先的话创建一个空的场景:
只放一个空的 GameRoot 即可。
脚本代码中编写:
这里我们的目的就是想 在 Unity 中让 lua 脚本调用这里的 Csharp脚本,从而输出字符串
紧接着:我们打开这个脚本
然后在 CustomSettings .cs 文件中添加上我们刚刚创建的 C# 脚本,后边儿有一个逗号,别忘了
然后回到我们的 Unity 界面。
这一步操作就是清空 wrok 文件,然后 Lua 就会重新生成一份新的文件出来。
直接 Next (确定)下一步即可
然后就可以看到这样的一个 cs 文件了。这个也就是刚刚我们写的那个 测试案例代码了,用于和 lua 进行交互的。
打开以后是这样的。可以看一下里边儿的一些方法和内容
至此我们的 csharp 文件差不多创建好了,然后创建一些 lua 文件。因为我们的 lua 文件没办法直接进行创建,所以我们需要打开文件夹,新建一个 txt,然后 将后缀改为 .lua ,不知道怎么该的我也贴在下面了。
创建完成了以后就是这样的
这里我使用的是 vsCode 编辑器 建议跟博主保持一致
现在就需要跟刚刚创建出来的 Csharp 代码进行一个交互了
这样的话就完成了 lua 脚本的创建了 OK 我知道,但是温馨提示,抄的时候别抄错了
程序猿 == 懒
Lua 脚本
然后回到我们的 Unity 编辑器这边儿再来创建一个 新的脚本叫做 :GameRoot(游戏启动器)
然后将我们的 GameRoot 脚本拖动到我们的 GameRoot 游戏对象身上
到了这里我们 就完成了 在 Unity 中使用 lua 调用 csharp 中的字符串了。
可想而知:结果完美运行