自定义lua解析方式-kb88凯时官网登录

来自:
时间:2024-05-10
阅读:
免费资源网,https://freexyz.cn/

在上文中我们学会学会更改加载路径,加载对应文件夹下的lua脚本。

默认解析加载的lua脚本存在的文件位置非ab包或者resources文件夹下往往不能随包体更新,这显然不符合热更需要。因此自定义继承

tolua中lua脚本加载解析类luafileutils来重写对应的lua脚本加载方法。

 public class luacustomload:luafileutils
    {
        /// 
        /// 优先从assetbundle中加载(默认ab文件名称为lua) resources文件夹下lua文件夹加载
        /// 
        /// 
        /// 
        public override byte[] readfile(string filename)
        {
            //后缀名称检查处理
            if (!filename.endswith(".lua"))
            {
                filename  = ".lua";
            }
            //二进制文件流
            byte[] buffer = null;
            
            //解析路径名称
            string[] tempfilepath = filename.split('/');
            debug.log(tempfilepath[tempfilepath.length - 1]);
            textasset luatext = loadassetbundlemanager.instance().loadresource("lua",tempfilepath[tempfilepath.length - 1]);
            if (luatext != null)
            {
                buffer = luatext.bytes;
            }
            //从resources文件夹下加载lua脚本
            if (buffer == null)
            {
                debug.log("从resources资源包中加载");
                string filepath = "lua/"   filename;
                //读取文件
                textasset textasset = resources.load(filepath);
                if (textasset != null)
                {
                    buffer = textasset.bytes;
                    //卸载资源
                    resources.unloadasset(textasset);
                }
            }
            return buffer;
        }
    }

将lua脚本打入resorces文件夹下(.lua文件)

自定义lua解析方式

测试:此时还未将lua脚本打入assetbundle包 所以从resources文件夹下加载lua脚本。(报错是因为assetbundle文件不存在!后期可以完善此lua文件加载脚本逻辑)

自定义lua解析方式

现在我们将lua脚本打入assetbundle中

此处踩坑:lua脚本打入ab包失败!将lua脚本后缀添加 [.txt] ,打包之前将tolua脚本清空。

自定义lua解析方式

测试使用自定义脚本要点:

在使用luastate之前先实例化自定义的加载方法:

自定义lua解析方式

这样,继承的luafileutils的自定义类会调用其构造函数,将子类实例化的this赋值给instance,从而执行子类重写的readfile方法。

自定义lua解析方式

测试代码:

自定义lua解析方式

免费资源网,https://freexyz.cn/
返回顶部
顶部
网站地图