当前位置:   article > 正文

XLua系列讲解_lua文件的加载方式_xlua lua.txt

xlua lua.txt

一、使用Unity动态加载的方式获取lua文件

1.可以使用Unity的动态加载方式进行lua文件的加(比如:Resources.load、Io加载方式、UnityWebRequest等方法进行加载)

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using XLua;
  5. /// <summary>测试第一种加载Lua脚本的方式</summary>
  6. public class LoadLuaFile : MonoBehaviour
  7. {
  8. private LuaEnv m_LuaEnv;
  9. //示例中是通过Resources的加载方式进行加载lua,切记在相应的路径下有对应的文件
  10. private string m_LuaScriptPath = "TestLoadLuaScript.lua";
  11. private void Start()
  12. {
  13. m_LuaEnv = new LuaEnv();
  14. TextAsset luaText = Resources.Load<TextAsset>(m_LuaScriptPath);
  15. m_LuaEnv.DoString(luaText.ToString());
  16. }
  17. private void OnDestroy()
  18. {
  19. m_LuaEnv.Dispose();
  20. }
  21. }

 2.在“Resources” 目录下,新建一个名为 “TestLoadLuaScript.lua.txt” 的lua脚本(代码如下)

print("我是Lua脚本,测试第一种加载Lua脚本的方式")

3.运行结果如下图

 

二、通过require函数来获取lua文件

1.Require 优点是简单,缺点是不能自定义加载路径。只能加载固定路径下的lua文件(代码如下)

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using XLua;
  5. /// <summary>测试通过Require的方式加载Lua文件</summary>
  6. public class RequireLoadLuaFile : MonoBehaviour
  7. {
  8. private LuaEnv m_LuaEnv;
  9. private void Start()
  10. {
  11. m_LuaEnv = new LuaEnv();
  12. m_LuaEnv.DoString("require 'TestRequireLoadLuaScript'");
  13. }
  14. private void OnDestroy()
  15. {
  16. m_LuaEnv.Dispose();
  17. }
  18. }

 2.在“Resources” 目录下,新建一个名为 “TestRequireLoadLuaScript.lua.txt” 的lua脚本(代码如下)

print("我是Lua脚本,测试第二种通过Require加载Lua脚本的方式")

3. 运行结果如下图

 

三、通过自定义Loader获取lua文件

1.通过自定义加载方式加载lua文件是比较灵活,一般商业项目中都使用这种方式加载

2. 在XLua中,提供了一个接口,让我们实现自定义Loader(接口如下)

  1. public delegate byte[] CustomLoader(ref string filepath);
  2. public void LuaEnv.AddLoader(CustomLoader loader)

3.实现加载 “streamingAssetsPath” 目录下的lua文件Dome(代码如下)

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Text;
  5. using UnityEngine;
  6. using XLua;
  7. /// <summary>测试自定义方式加载lua文件</summary>
  8. public class CustomLoaderTest : MonoBehaviour
  9. {
  10. private LuaEnv m_LuaEnv;
  11. private void Start()
  12. {
  13. m_LuaEnv = new LuaEnv();
  14. m_LuaEnv.AddLoader(MyCustomLoader);
  15. m_LuaEnv.DoString("require 'TestCustomLoadLua'");
  16. }
  17. //自定义loader
  18. private byte[] MyCustomLoader(ref string filePath)
  19. {
  20. string absPath = Application.streamingAssetsPath + "/" + filePath + ".lua.txt";
  21. return Encoding.UTF8.GetBytes(File.ReadAllText(absPath));
  22. }
  23. private void OnDestroy()
  24. {
  25. m_LuaEnv.Dispose();
  26. }
  27. }

 4.在“streamingAssetsPath” 目录下,新建一个名为 “TestCustomLoadLua.lua.txt” 的lua脚本(代码如下) 

print("我是Lua脚本,测试第三种通过自定义Loader获取lua文件")

5. 运行结果如下图

 

推荐学习资料

XLua入门到精通系列讲解教程目录

Xlua官方插件下载:里面有很多示例工程

lua基础教程:菜鸟教程网

欢迎对Unity技术感兴趣的朋友,加入QQ群:299412191 讨论 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/95799
推荐阅读
相关标签
  

闽ICP备14008679号