KaaPexei 发表于 2022-5-27 09:20

unity刘国柱热更新设计之Xlua基础学习笔记(一)Lua文件的 ...

一、直接执行字符串方式:(一般用在测试用)
//Xlua的环境核心类
      LuaEnv env = null;
      //定义lua脚本
      string strLUa1 = "print('这是我的第一个lua程序')";
      //定义调用unity系统类
      string strLua2 = "CS.UnityEngine.Debug.Log('This is my Hello Word')";
      void Start()
      {
            env = new LuaEnv();
            env.DoString(strLUa1);
            env.DoString(strLua2);
      }
      private void OnDestroy()
      {
            //释放lua
            env.Dispose();
      }二、加载Lua文件
1.普通加载方式

[*]在Resources中创建一个lua文件。



unity中文件放置方式



文件的后缀为.lua.txt



文件中写的内容


[*]在unity中调用
//Xlua的环境核心类
      LuaEnv env = null;
      void Start()
      {
            env = new LuaEnv();
            //通过Resources.Load来加载lua文件 用unity中的TextAsset接受文字
            TextAsset txtAsset = Resources.Load<TextAsset>("LuaStu.lua");
            env.DoString(txtAsset.ToString());
      }
      private void OnDestroy()
      {
            //释放lua
            env.Dispose();
      }2.Require函数进行加载(常用方式)

[*]require就是一个个的调用Loader,查找出匹配的lua文件,然后执行该文件。
[*]注意:
[*]用为resoure只支持有限后缀,放resource下的lua文件需要加上txt后缀。
[*]使用lua开的项目推荐的方式是:整个程序就一个Dostring("require'main'"),然后在main.lua中加载其他脚本。(这里的Main文件名称可以任意)。
[*]实例:文件放置方式同上。
//Xlua的环境核心类
      LuaEnv env = null;
      void Start()
      {
            env = new LuaEnv();

            env.DoString("require'LuaStu'");//只能加载lua不能加载其他文件所以不用写后缀名
      }
      private void OnDestroy()
      {
            //释放lua
            env.Dispose();
      }3.自定义Loader方式(商用开发方式)

[*]unity文件放置方式







[*]脚本
//Xlua的环境核心类
      LuaEnv env = null;
      void Start()
      {
            env = new LuaEnv();
            env.AddLoader(CustomMyLoader);
            env.DoString("require'LuaStu'");//只能加载lua不能加载其他文件所以不用写后缀名
      }
      byte[] CustomMyLoader(ref string fileName)
      {
            byte[] byArrayReturn = null;//返回数据
            //定义lua路径
            string luaPath = Application.dataPath + "/Scripts/LuaScrypts/" + fileName + ".lua";
            //读取lua路径中指定lua文件内容
            string strLuaContent = File.ReadAllText(luaPath);
            //数据类型转换
            byArrayReturn = System.Text.Encoding.UTF8.GetBytes(strLuaContent);
            return byArrayReturn;
      }
      private void OnDestroy()
      {
            //释放lua
            env.Dispose();
      }<hr/>提取码:c7o0






提取码:dhhc
页: [1]
查看完整版本: unity刘国柱热更新设计之Xlua基础学习笔记(一)Lua文件的 ...