Unity热更新ToLua学习--Day One(小白向)

一、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实现更多操作啊,后续看吧。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值