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

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

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

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

方法二:
github.com
ToLua(LuaFramework) - ToLua开篇与项目演示案例-tolua最全教程_第1张图片

上边儿的两种方式都可以进行一个下载,下载完了以后我们能够得到一个这样的压缩包:
在这里插入图片描述
然后就是解压,完成了以后 ,使用 Unity 打开,需要注意的是 最好使用 2017版本及以下的
打开的时候可能稍微的有点慢,所以这里需要拿出约会等女孩子的那个精神…哈哈哈,我是等够了。后来
我:我已经到了你宿舍楼下(其实我还在宿舍翘着二郎腿)
女孩子:嗯呢,那我下来了
我:好的,别让我等太久哦(这个时候还能抽根烟儿,洗个脸,吹吹头发然后出门儿,你会发现女孩子还没出门儿…)

继续回到我们的正题:
ToLua(LuaFramework) - ToLua开篇与项目演示案例-tolua最全教程_第2张图片
打开工程以后会弹出一个这样的提示框,生成一些文件
就像是前边儿说的,如果你用的是 2017 以上的话,那么会出现报错:
ToLua(LuaFramework) - ToLua开篇与项目演示案例-tolua最全教程_第3张图片
这是因为新版本的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 版的
这个时候,我们再来看看他 的资源管理窗口里边都是有那些东西的。
ToLua(LuaFramework) - ToLua开篇与项目演示案例-tolua最全教程_第4张图片
打开了这个CS类以后,可以看到有一些看到这个脚本那些类作为静态类,那些类需要导出,那些委托需要导出,我们需要输出的lua 类型也需要在 这里进行一个导出。在 tolua 中已经为我们提供了大部分的 Unity 类型,如果说我们需要导入自己的类型,或者说 tolua 没有的类型的时候,那我们就在其中进行一个添加就行了
ToLua(LuaFramework) - ToLua开篇与项目演示案例-tolua最全教程_第5张图片
这个 Lua 文件夹中存放的就是我们的 lua 脚本
ToLua(LuaFramework) - ToLua开篇与项目演示案例-tolua最全教程_第6张图片
然后就是我们 的ToLua 文件夹下边的 Soure 文件夹下边儿的 LuaConst.cs 文件:存放的是 lua 路径以及一些配置文件。
Generate 就是一系列的 Lua 文件:主要是生成交互的绑定代码,我们项目中的 C# 和 Lua 交互主要是靠这个文件夹来进行。
ToLua(LuaFramework) - ToLua开篇与项目演示案例-tolua最全教程_第7张图片
然后就是一些 tolua 的实例代码,可以利用它进行学习
ToLua(LuaFramework) - ToLua开篇与项目演示案例-tolua最全教程_第8张图片
--------------项目开发步骤----------
这边我是写在 Tolua 下边儿的 Examples 文件夹中,也就是说相当是个实例 项目
首先的话创建一个空的场景:
ToLua(LuaFramework) - ToLua开篇与项目演示案例-tolua最全教程_第9张图片
只放一个空的 GameRoot 即可。
ToLua(LuaFramework) - ToLua开篇与项目演示案例-tolua最全教程_第10张图片
脚本代码中编写:

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最全教程_第11张图片
然后在 CustomSettings .cs 文件中添加上我们刚刚创建的 C# 脚本,后边儿有一个逗号,别忘了
ToLua(LuaFramework) - ToLua开篇与项目演示案例-tolua最全教程_第12张图片
然后回到我们的 Unity 界面。
ToLua(LuaFramework) - ToLua开篇与项目演示案例-tolua最全教程_第13张图片
这一步操作就是清空 wrok 文件,然后 Lua 就会重新生成一份新的文件出来。
ToLua(LuaFramework) - ToLua开篇与项目演示案例-tolua最全教程_第14张图片
直接 Next (确定)下一步即可
ToLua(LuaFramework) - ToLua开篇与项目演示案例-tolua最全教程_第15张图片
然后就可以看到这样的一个 cs 文件了。这个也就是刚刚我们写的那个 测试案例代码了,用于和 lua 进行交互的。
ToLua(LuaFramework) - ToLua开篇与项目演示案例-tolua最全教程_第16张图片
打开以后是这样的。可以看一下里边儿的一些方法和内容
至此我们的 csharp 文件差不多创建好了,然后创建一些 lua 文件。因为我们的 lua 文件没办法直接进行创建,所以我们需要打开文件夹,新建一个 txt,然后 将后缀改为 .lua ,不知道怎么该的我也贴在下面了。

ToLua(LuaFramework) - ToLua开篇与项目演示案例-tolua最全教程_第17张图片
创建完成了以后就是这样的
ToLua(LuaFramework) - ToLua开篇与项目演示案例-tolua最全教程_第18张图片
这里我使用的是 vsCode 编辑器 建议跟博主保持一致
现在就需要跟刚刚创建出来的 Csharp 代码进行一个交互了
ToLua(LuaFramework) - ToLua开篇与项目演示案例-tolua最全教程_第19张图片
这样的话就完成了 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最全教程_第20张图片

你可能感兴趣的:(ToLua)