找回密码
 立即注册
查看: 169|回复: 0

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

[复制链接]
发表于 2022-5-27 09:20 | 显示全部楼层 |阅读模式
一、直接执行字符串方式:(一般用在测试用)
//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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-5-13 17:29 , Processed in 0.088625 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表