赞
踩
1.可以使用Unity的动态加载方式进行lua文件的加(比如:Resources.load、Io加载方式、UnityWebRequest等方法进行加载)
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using XLua;
-
-
- /// <summary>测试第一种加载Lua脚本的方式</summary>
- public class LoadLuaFile : MonoBehaviour
- {
-
- private LuaEnv m_LuaEnv;
-
- //示例中是通过Resources的加载方式进行加载lua,切记在相应的路径下有对应的文件
- private string m_LuaScriptPath = "TestLoadLuaScript.lua";
-
-
- private void Start()
- {
- m_LuaEnv = new LuaEnv();
- TextAsset luaText = Resources.Load<TextAsset>(m_LuaScriptPath);
- m_LuaEnv.DoString(luaText.ToString());
- }
-
- private void OnDestroy()
- {
- m_LuaEnv.Dispose();
- }
-
-
- }
2.在“Resources” 目录下,新建一个名为 “TestLoadLuaScript.lua.txt” 的lua脚本(代码如下)
print("我是Lua脚本,测试第一种加载Lua脚本的方式")
3.运行结果如下图
1.Require 优点是简单,缺点是不能自定义加载路径。只能加载固定路径下的lua文件(代码如下)
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using XLua;
-
- /// <summary>测试通过Require的方式加载Lua文件</summary>
- public class RequireLoadLuaFile : MonoBehaviour
- {
- private LuaEnv m_LuaEnv;
-
-
- private void Start()
- {
- m_LuaEnv = new LuaEnv();
-
- m_LuaEnv.DoString("require 'TestRequireLoadLuaScript'");
- }
-
-
- private void OnDestroy()
- {
- m_LuaEnv.Dispose();
- }
- }
2.在“Resources” 目录下,新建一个名为 “TestRequireLoadLuaScript.lua.txt” 的lua脚本(代码如下)
print("我是Lua脚本,测试第二种通过Require加载Lua脚本的方式")
3. 运行结果如下图
1.通过自定义加载方式加载lua文件是比较灵活,一般商业项目中都使用这种方式加载
2. 在XLua中,提供了一个接口,让我们实现自定义Loader(接口如下)
- public delegate byte[] CustomLoader(ref string filepath);
- public void LuaEnv.AddLoader(CustomLoader loader)
3.实现加载 “streamingAssetsPath” 目录下的lua文件Dome(代码如下)
- using System.Collections;
- using System.Collections.Generic;
- using System.IO;
- using System.Text;
- using UnityEngine;
- using XLua;
-
-
- /// <summary>测试自定义方式加载lua文件</summary>
- public class CustomLoaderTest : MonoBehaviour
- {
- private LuaEnv m_LuaEnv;
-
- private void Start()
- {
- m_LuaEnv = new LuaEnv();
- m_LuaEnv.AddLoader(MyCustomLoader);
-
- m_LuaEnv.DoString("require 'TestCustomLoadLua'");
- }
-
-
- //自定义loader
- private byte[] MyCustomLoader(ref string filePath)
- {
- string absPath = Application.streamingAssetsPath + "/" + filePath + ".lua.txt";
-
- return Encoding.UTF8.GetBytes(File.ReadAllText(absPath));
- }
-
-
- private void OnDestroy()
- {
- m_LuaEnv.Dispose();
- }
- }
4.在“streamingAssetsPath” 目录下,新建一个名为 “TestCustomLoadLua.lua.txt” 的lua脚本(代码如下)
print("我是Lua脚本,测试第三种通过自定义Loader获取lua文件")
5. 运行结果如下图
Xlua官方插件下载:里面有很多示例工程
lua基础教程:菜鸟教程网
欢迎对Unity技术感兴趣的朋友,加入QQ群:299412191 讨论
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。