一、Lua语言学习
二、ToLua框架
三、使用ToLua框架对Lua&C#进行交互
一、Lua语言学习
Lua是很轻量级的脚本语言,Table也是个很神奇的东西,前面刚开始看的时候以为是Python(╯▔皿▔)╯废话不多说,是菜鸟就点进去吧 Lua菜鸟教程
二、ToLua框架
1.ToLua下载及安装
TuLua下载地址:TuLua
下载后解压并使用Unity以新项目打开,文件加载后进入项目里会有提示是否自动生成常用类型注册文件,点击确定:
现在已经进入TuLua框架了
2.TuLua框架认识
Unity菜单栏里多了Lua选项
资源包里有一下几个文件夹:
1.Editor:里面只有一个CustomSettingsC#脚本,这个脚本是自定义配置文件,相当于一个注册文件,将我们C#类、委托等在里面进行注册后,Lua就能和C#交互了。
2.Lua:存放Lua脚本的一个文件夹,可以把Lua脚本文件放进里面。
3.Plugins:插件目录
4.Source:LuaConst.cs–Lua路径存在的一些配置文件 Generate文件夹:存放一些在CustomSettings里面注册后生成的绑定代码脚本,这些脚本就是将Lua和C#进行绑定交互的。
5.ToLua:
BaseType:基础类型绑定代码
Core:ToLua提供的一些核心功能
Examples:Tolua实例代码,提供学习基础用
Mic:杂项
Reflection:反射相关代码
三、使用ToLua框架对Lua&C#进行交互
尝试在输出面板上使用Lua&C#交互并输出“HelloWorld”:
先创建一个Scripts文件夹,再创建2个脚本LuaTest.cs和Mian.cs
LuaTest.cs:创建一个函数,放回字符串
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using LuaInterface;
public class LuaTest : MonoBehaviour
{
public static string TestPrint()
{
return "Hello World";
}
}
然后把LuaTest.cs这个脚本在前面所说的CustomSettings脚本里面去进行注册:
在上图函数进行注册导出:我在函数最末端进行了注册导出
然后点击Unity菜单栏的Lua–>clear warp files,随后会自动弹出是否重新自动生成类型注册,点击确定:
在Source-Generate里面就会生成我妈注册后的交互文件:可以不用管他,现在可以使用Lua对C#进行调用了
在Lua文件夹里面创建一个Lua文件:Test.Lua
打开,可以用专门的Edit打开,也可以用记事本打开,由于我没去下载Edit,我就用记事本了,输入以下代码:
local h = LuaTest.TestPrint() //因为LuaTest这个类上面已经ToLua导出,所以Lua可以直接调用并接收返回值。
print(h)//将字符串输出
之后,我们在之前创建的Mian.cs里面对这个Lua脚本进行调用:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using LuaInterface;
public class Main : MonoBehaviour
{
private LuaState lua = null;\\创建一个虚拟机
void Start()
{
//调用Lua必定的步骤开始:
new LuaResLoader();//加载Lua文件
lua = new LuaState();//虚拟机初始化
lua.Start();//开始虚拟机
LuaBinder.Bind(lua);//绑定虚拟机
//调用Lua必定的步骤结束。
lua.DoFile("Test.lua");//调用运行Test.Lua脚本
}
}
将此脚本挂载在场景里,开始:
已将字符串输出。
以上就是实现Lua&C#交互的基本步骤。
总结
一天下来,收获颇多,Lua语言挺简洁的,很容易看懂,要是使用的是热更新对游戏进行开发,那岂不是所有的逻辑处理都得到Lua里进行,而C#这边的文件基本要保持不变,虽然过程繁琐,但是熟悉了也就清晰了。Lua的Table很神奇,组合了数据和哈希表,还能当类使用。那么问题来了,怎么用Lua对Unity实现更多操作啊,后续看吧。