Unity Lua 之 在 Unity中 通过 文件加载的方式,读取执行文件中的 lua 内容,实现 Hello Lua
目录
Unity Lua 之 在 Unity中 通过 文件加载的方式,读取执行文件中的 lua 内容,实现 Hello Lua
一、简单介绍
Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
xLua为Unity、 .Net、 Mono等C#环境增加Lua脚本编程的能力,借助xLua,这些Lua代码可以方便的和C#相互调用。
xLua在功能、性能、易用性都有不少突破,这几方面分别最具代表性的是:
- 可以运行时把C#实现(方法,操作符,属性,事件等等)替换成lua实现;
- 出色的GC优化,自定义struct,枚举在Lua和C#间传递无C# gc alloc;
- 编辑器下无需生成代码,开发更轻量;
在Unity中使用xlua 的重要一个原因就是热更新,我们本着这个歌目的开始我们的学习。
本节介绍,如何读取执行文件中的 lua 内容,实现 Hello Lua。
二、注意事项
1、建议文件以 .lua.txt,便于区别是 lua,同时 Unity 读取也方便
2、在使用 require 加载文件的时候(例如:luaEnv.DoString("require'HelloLuaByFile'");),注意:
(1)文件名为:xxx.lua.txt;
(2)文件放在 Resources 文件夹下
(require实际上是调一个个的loader去加载,有一个成功就不再往下尝试,全失败则报文件找不到。 目前xLua除了原生的loader外,还添加了从Resource加载的loader,需要注意的是因为Resource只支持有限的后缀,放Resources下的lua文件得加上txt后缀。)
三、实现步骤
1、新建一个文本文件 HelloLuaByFile.lua.txt
2、打开编写 lua 代码
3、新建 Unity 工程,新建一个 Resources 文件夹,并把 文本文件 HelloLuaByFile.lua.txt 导入
4、新建脚本,进行读取执行文件中的内容
5、把脚本挂载到场景中
6、运行场景,输入 Hello Lua
四、关键代码
using UnityEngine;
using XLua; // 导入 XLua
public class HelloLuaByFile : MonoBehaviour
{
// Lua 环境变量
LuaEnv luaEnv;
// Start is called before the first frame update
void Start()
{
LuaInit();
// 方法 一:
// 加载 Lua 文件
//TextAsset ta = Resources.Load<TextAsset>("HelloLuaByFile.lua");
//if (ta != null) {
// // 执行 Lua 语句
// luaEnv.DoString(ta.text);
//}
// 方法 二:(前提 1、文件名为:HelloLuaByFile.lua.txt; 2、文件放在 Resources 文件夹下 )
luaEnv.DoString("require'HelloLuaByFile'");
}
void OnDestroy() {
LuaDispose();
}
/// <summary>
/// Lua 环境构建
/// </summary>
private void LuaInit() {
luaEnv = new LuaEnv();
}
/// <summary>
/// Lua 环境释放
/// </summary>
private void LuaDispose() {
luaEnv.Dispose();
}
}